熊猫对差异进行滞后分组

时间:2018-11-01 19:31:46

标签: python-2.7 pandas series difference

我有一个带有三个变量的熊猫数据框。第一个是分组变量,第二个是组“场景”内的变量,第三个是结果。我想计算空条件,方案零和组内其他方案之间的组内差异。场景的数量在不同的组之间有所不同。我的数据如下:

ipdb> aDf FieldId Scenario TN_load 0 0 0 134.922952 1 0 1 111.787326 2 0 2 104.805951 3 1 0 17.743467 4 1 1 13.411849 5 1 2 13.944552 6 1 3 17.499152 7 1 4 17.640090 8 1 5 14.220673 9 1 6 14.912306 10 1 7 17.233862 11 1 8 13.313953 12 1 9 17.967438 13 1 10 14.051882 14 1 11 16.307317 15 1 12 12.506358 16 1 13 16.266233 17 1 14 12.913150 18 1 15 18.149811 19 1 16 12.337736 20 1 17 12.008868 21 1 18 13.434605 22 2 0 454.857959 23 2 1 414.372215 24 2 2 478.371387 25 2 3 385.973388 26 2 4 487.293966 27 2 5 481.280175 28 2 6 403.285123 29 3 0 30.718375 ... ... ... 29173 4997 3 53.193992 29174 4997 4 45.800968

我还必须编写函数以获取百分比差异等,但这让我很困惑。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以使用groupbytransform来获得场景0在组内的差异,例如:

df['TN_load_0'] = df['TN_load'].groupby(df['FieldId']).transform(lambda x: x - x.iloc[0])

df

    FieldId Scenario    TN_load TN_load_0
0   0              0    134.922952  0.000000
1   0              1    111.787326  -23.135626
2   0              2    104.805951  -30.117001
3   1              0    17.743467   0.000000
4   1              1    13.411849   -4.331618
5   1              2    13.944552   -3.798915
6   1              3    17.499152   -0.244315