gpt4 book ai didi

python - 在 Pandas 中向先前的单元格值添加计数

转载 作者:太空宇宙 更新时间:2023-11-03 16:37:25 28 4
gpt4 key购买 nike

在 Pandas 中,我希望根据另一列“A”中的 bool 值在“B”列中添加一个值。因此,如果“A”为 True,则只要“A”为 false,就开始计数(即每新行添加一个)。当“A”为 True 时重置并重新开始计数。我设法用“for”循环来做到这一点,但这非常耗时。我想知道是否没有更省时的解决方案?

结果应该是这样的:

Date     A      B 
01.2010 False 0
02.2010 True 1
03.2010 False 2
04.2010 False 3
05.2010 True 1
06.2010 False 2

最佳答案

您可以使用cumsumgroupbycumcount :

print df
Date A
0 1.201 False
1 1.201 True
2 1.201 False
3 2.201 True
4 3.201 False
5 4.201 False
6 5.201 True
7 6.201 False
roll = df.A.cumsum()
print roll
0 0
1 1
2 1
3 2
4 2
5 2
6 3
7 3
Name: A, dtype: int32

df['B'] = df.groupby(roll).cumcount() + 1
#if in first values are False, output is 0
df.loc[roll == 0 , 'B'] = 0
print df
Date A B
0 1.201 False 0
1 1.201 True 1
2 1.201 False 2
3 2.201 True 1
4 3.201 False 2
5 4.201 False 3
6 5.201 True 1
7 6.201 False 2

关于python - 在 Pandas 中向先前的单元格值添加计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37099335/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com