>我有一个这样的数据框,
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