例如,在下面的嵌套中,列“B”是基于列“a”上次为True的时间计算的:
a b
0 True 0
1 False 1
2 True 0
3 False 1
4 False 2
5 False 3
字符串
目前我使用下面的代码来实现这个功能。但问题是因为我使用的是循环,所以代码非常慢。
a=np.where(cond)[-1]
b=np.array([],dtype=np.int64)
s=0
for i in range(0,len(data)):
if i in a:
b=np.append(b,0)
s=0
else:
b=np.append(b,s)
s+=1
data['b']=pd.Series(b).fillna(method='ffill').fillna(-1)
型
有没有更快的方法来做到这一点,而不使用for循环?
1条答案
按热度按时间j8yoct9x1#
IIUC,您可以使用
groupby_cumcount
:字符串