当连续列值小于某个数字时,熊猫行总和



>我有一个这样的数据框,

df
col1     col2    col3
A       34       1
B       86       2
A       53       21
C       24       33
B       21       2
C       11       1

现在我想逐行添加 col1 和 col2 值,其中连续的 col3 值小于 3,因此最终的数据框如下所示,

col1    col2
A      120
A       53
C       24
B       32

我可以使用 for 循环并将其与上一行进行比较来执行此操作,但执行时间会很大,寻找一些 pandas 快捷方式来最有效地执行此操作。

您可以使用cumsum来获取连续的值块<=3

s = df.col3.ge(3)
# print `s.cumsum()` and `s` to see details
df.groupby([s.cumsum(),s], as_index=False).agg({'col1':'first','col2':'sum'})

输出:

col1  col2
0    A   120
1    A    53
2    B    32
3    C    24

最新更新