我正在处理一个有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”,就无法“重置”计数器
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
1条答案
按热度按时间enxuqcxy1#
您可以用途:
输出量: