多索引透视表的Pandas减法

kyvafyod  于 2023-11-15  发布在  其他
关注(0)|答案(1)|浏览(106)

我有一个下面的数据框架,我转换成pandas透视表有两个索引“日期”和“评级。值排序在列A,B和C。
x1c 0d1x的数据
我想找到一个解决方案,它将减去每个列的值和连续几天的评级。比如,从03/01/2007到02/01/2007的评级M的A变化将是0.4179 - 0.4256 = -0.0077。减法不会总是在一天的差异上执行。但它总是(新日期-旧日期)。
我正在寻找的结果可以在下表中找到:


wbgh16ku

wbgh16ku1#

如果你的嵌套结构正确排序(或者使用df.sort_values('Date')),你可以使用groupby_diff

# Replace ['A'] with ['A', 'B', 'C']
df['A_diff'] = df.groupby('Rating')['A'].diff().fillna(0)

字符串
输出量:

>>> df
         Date Rating       A  A_diff
0  02/01/2007      M  0.4256  0.0000
1  02/01/2007     MM  0.4358  0.0000
2  02/01/2007    MMM  0.4471  0.0000
3  03/01/2007      M  0.4179 -0.0077
4  03/01/2007     MM  0.4325 -0.0033
5  03/01/2007    MMM  0.4476  0.0005
6  04/01/2007      M  0.4173 -0.0006
7  04/01/2007     MM  0.4316 -0.0009
8  04/01/2007    MMM  0.4469 -0.0007


如果你不知道你有多少列,你可以试试:

cols = df.columns[2:]
df[cols] = df.groupby('Rating')[cols].diff().fillna(0)

相关问题