【问题标题】:Pandas grouped differences with variable lagsPandas 对具有可变滞后的差异进行分组
【发布时间】:2018-11-01 19:31:46
【问题描述】:

我有一个包含三个变量的 pandas 数据框。第一个是分组变量,第二个是组内“情景”,第三个是结果。我想计算空条件、场景零和组内其他场景之间的组内差异。不同组之间的场景数量不同。我的数据如下:

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

我还必须编写函数来获取百分比差异等,但这让我很难过。非常感谢任何帮助。

【问题讨论】:

    标签: python-2.7 pandas series difference


    【解决方案1】:

    您可以使用 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
    

    【讨论】:

    • 完美!谢谢你的课。
    • 欢迎您!如果它解决了问题,请接受答案:)
    猜你喜欢
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多