当前位置: 动力学知识库 > 问答 > 编程问答 >

python - Divide Dataframe by a series sharing index

问题描述:

I want to divide a DataFrame by one of its columns (a Series), they both share the index, so I expect the result has the shape of the original DataFrame.

This code shows what I did:

import numpy as np

import pandas as pd

cols = ['A', 'B', 'C', 'D']

ix = range(10)

df = pd.DataFrame(index=ix, columns=cols, data=np.random.randint(0, 100, size=(10, 4)))

print(df / df['A'])

The result is something like that:

 0 1 2 3 4 5 6 7 8 9 A B C D

0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

8 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

But I expect something like that:

 A B C D

0 1 .. .. ..

1 1 .. .. ..

2 1 .. .. ..

3 1 .. .. ..

4 1 .. .. ..

5 1 .. .. ..

6 1 .. .. ..

7 1 .. .. ..

8 1 .. .. ..

9 89 94 14 44

Thanks in advance.

网友答案:

use div with axis=0, it's aligning on the columns hence you get the 0...9 and original columns, you should use div and explicitly pass axis=0 so it broadcasts along the index:

In [58]:

, axis=0
df.div(df['A'], axis=0)
Out[58]:
     A          B          C         D
0  1.0   0.818182   1.681818  0.431818
1  1.0   1.562500   0.625000  1.468750
2  1.0  17.000000   5.400000  2.800000
3  1.0   9.428571  13.857143  8.285714
4  1.0   0.256098   0.085366  1.146341
5  1.0  27.000000  21.500000  7.500000
6  1.0   0.444444   1.236111  1.041667
7  1.0   0.268293   0.048780  1.146341
8  1.0   0.505051   0.434343  0.101010
9  1.0   0.673684   0.378947  0.873684

You can see a related question: What does the term "broadcasting" mean in Pandas documentation? that illustrates the broadcasting rules

分享给朋友:
您可能感兴趣的文章:
随机阅读: