繁体   English   中英

在Pandas multiindex数据帧中的组之间进行计算

[英]Calculation between groups in a Pandas multiindex dataframe

假设我生成一个多索引数据框,如下所示:

arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
          np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
df = pd.DataFrame(np.random.randn(8, 4), index=arrays)

                0          1            2           3
bar one -0.155088   -0.177214   -0.761230   -0.106045
    two  1.930298   -0.309573   -0.051878   -0.388760
baz one  0.111287    1.374426    0.408575    1.555659
    two -0.809201   -0.168658    0.055037    1.871289
foo one  0.286833   -0.988538    0.918153    0.841016
    two  0.348741    0.403747    0.584992   -1.838409
qux one  1.212017   -0.224872    0.616604    1.080590
    two  0.494800   -0.089214    0.829222    2.005217

如何创建一个新列,即#3列值的组“一”和“二”之间的比例(例如,第一个元素是-0.106045 / -0.388760)?

如何结合当前数据框显示它?

随机数不同。 使用转换

In [11]: df.groupby(level=0)[3].transform(lambda x: x[0]/ x[1])
Out[11]:
bar  one   -1.391651
     two   -1.391651
baz  one   -1.688734
     two   -1.688734
foo  one   -1.128344
     two   -1.128344
qux  one   -2.170493
     two   -2.170493
Name: 3, dtype: float64

为了显示这一点,将其设置为一列:

In [12]: df["ratio"] = df.groupby(level=0)[3].transform(lambda x: x[0]/ x[1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM