Pandas -如何聚合特定列中2个范围之间的值

pinkon5k  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(106)

我正在处理一个有2列的df。

column1 = [False, False, False, True, False, False, True]
column2 = [1, 1, 1, 1, 1, 1, 1]

我想对所有“False”值求和,直到第一个“True”值,然后对后面的“False”值求和,直到下一个“True”值,依此类推。
输出应为

column3 = [0,0,0,3,0,0,2]

我尝试对列值求和,但一旦从另一列命中“True”,就无法“重置”计数器

enxuqcxy

enxuqcxy1#

您可以用途:

df['column3'] = (df['column2']
 .mask(df['column1']) # get False values only
 .groupby(df.loc[::-1, 'column1'].cumsum()) # group with next True
 # get sum of False values only where True
 .transform('sum').where(df['column1'], 0).convert_dtypes()
)

输出量:

column1  column2  column3
0    False        1        0
1    False        1        0
2    False        1        0
3     True        1        3
4    False        1        0
5    False        1        0
6     True        1        2

相关问题