【问题标题】:Sum / Mean of the rows between the flags toggle in dataframe在数据框中切换标志之间的行的总和/平均值
【发布时间】:2019-08-08 04:01:23
【问题描述】:

我有一个这样的数据框


id  power   flag
0   20      0
1   25      0
2   26      1
3   30      1
4   18      0
5   30      0
6   19      0
7   21      1
8   23      0

我正在尝试获取 power 列的平均/总和 输出应该是这样的

0   45 (20 +25)
1   56 (26 + 30)
2   67 (18 +30 +19)
3   21 (21)
4   23 (23)

如果标志不是二进制的呢?

有人可以帮我解决这些问题吗?谢谢

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    IIUC,使用来自diff.ne(0) 的布尔值的累积总和作为分组,而只是sum

    df.groupby(df.flag.diff().ne(0).cumsum()).power.sum()
    

    flag
    1    45
    2    56
    3    67
    4    21
    5    23
    Name: power, dtype: int64
    

    【讨论】:

    • 您可以将 .power.sum() 替换为 .agg({'power': ['sum', 'mean']}) 以一举获得总和和均值。
    • 谢谢,但是如果标志不是二进制的,那么标志的值是 0,1,2,3。
    • 那么您应该使用更接近您的情况的示例进行更新!代码可能不会有太大变化。一旦你编辑,我可以帮助你;)
    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2018-09-11
    • 2015-10-09
    • 2022-11-24
    • 1970-01-01
    • 2020-06-04
    • 2023-04-07
    相关资源
    最近更新 更多