numpy 如何获取当前行和最后一行之间满足条件的行数?- Pandas

xe55xuns  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

例如,在下面的嵌套中,列“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循环?

j8yoct9x

j8yoct9x1#

IIUC,您可以使用groupby_cumcount

df['b'] = df.groupby(df['a'].cumsum()).cumcount()
print(df)

# Output
       a  b
0   True  0
1  False  1
2   True  0
3  False  1
4  False  2
5  False  3

字符串

相关问题