python - 按系列共享索引划分 Dataframe

标签 python pandas dataframe series

我想将 DataFrame 除以它的其中一个列(一个系列),它们共享索引,所以我希望结果具有原始 DataFrame 的形状。

这段代码展示了我所做的:

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'])

结果是这样的:

    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

但我期待这样的事情:

    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

提前致谢。

最佳答案

divaxis=0 一起使用,它在列上对齐,因此您得到 0...9 和原始列,您应该使用 div 并显式传递 axis=0 以便它沿着索引广播:

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

可以看到一个相关问题:What does the term "broadcasting" mean in Pandas documentation?说明广播规则

关于python - 按系列共享索引划分 Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41702117/

相关文章:

Python pandas 从日期时间数组生成一个月的第一天

python - 解析器必须是字符串或字符流,而不是系列

python - pandas.DataFrame.drop_duplicates(inplace=True) 抛出 'TypeError: unhashable type: ' dict''

python - Pandas 复制了 3 个字段

python - 在 python 的控制台窗口上按下鼠标

python - 异常类代码不起作用

python - 以内存有效的方式迭代添加 pandas 数据帧

python-3.x - 如何根据数据框 pandas 的唯一首字母构建新列

python - Pygame 使用 PyTMX 加载 Tilemap

python - `tabulate` 按键排序列