【问题标题】:Pandas : dataframe cumsum , reset if other column is false [duplicate]Pandas:数据框 cumsum ,如果其他列为假则重置 [重复]
【发布时间】:2018-07-10 19:45:17
【问题描述】:

我有一个包含 2 列的数据框,这里的目标很简单;如果行列设置为 False,则重置 df.cumsum();

df

      value      condition
0       1            1
1       2            1
2       3            1
3       4            0
4       5            1

想要的结果如下:

df

      value      condition
0       1            1
1       3            1
2       6            1
3       4            0
4       9            1

如果我按照本文Python pandas cumsum() reset after hitting max 中的描述循环数据帧,我可以达到想要的结果,但我正在寻找一种使用 pandas 标准函数的更加矢量化的方式

【问题讨论】:

    标签: pandas numpy dataframe cumsum


    【解决方案1】:

    怎么样:

    df['cSum'] = df.groupby((df.condition == 0).cumsum()).value.cumsum()
    

    输出:

       value  condition  cSum
    0      1          1     1
    1      2          1     3
    2      3          1     6
    3      4          0     4
    4      5          1     9
    

    您会将连续的行组合在一起,直到在condition 列中遇到0,然后在每个组中分别应用cumsum

    【讨论】:

    • 这是我试图解决的确切问题,但是接受的解决方案在当前版本的 pandas 中引发错误。你知道怎么解决吗?
    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 2021-01-10
    • 1970-01-01
    • 2017-11-14
    • 2019-11-28
    • 2020-02-27
    • 1970-01-01
    • 2020-10-02
    相关资源
    最近更新 更多