如何在pandas多索引数据框架上进行迭代和计算



我有一个pandas多索引数据框架:

>>> df
0         1
first second
A     one     0.991026  0.734800
two     0.582370  0.720825
B     one     0.795826 -1.155040
two     0.013736 -0.591926
C     one    -0.538078  0.291372
two     1.605806  1.103283
D     one    -0.617655 -1.438617
two     1.495949 -0.936198

我正试图找到一种有效的方法,将第0列中的每个数字除以第1列中在索引"first"下共享同一组的最大数字,并将其作为第三列。有没有一种简单有效的方法来做这样的事情,而不需要多个for循环?

使用Series.divmax作为第一级的最大值:

print (df[1].max(level=0))
first
A    0.734800
B   -0.591926
C    1.103283
D   -0.936198
Name: 1, dtype: float64

df['new'] = df[0].div(df[1].max(level=0))
print (df)
0         1       new
first second                              
A     one     0.991026  0.734800  1.348702
two     0.582370  0.720825  0.792556
B     one     0.795826 -1.155040 -1.344469
two     0.013736 -0.591926 -0.023206
C     one    -0.538078  0.291372 -0.487706
two     1.605806  1.103283  1.455480
D     one    -0.617655 -1.438617  0.659748
two     1.495949 -0.936198 -1.597898

相关内容

  • 没有找到相关文章