我对熊猫还很新。我想计算零值的行数,直到下一行,其中包含一个值。例如,我想采用一个如下所示的数据框:
id Distance count
05 10 6
10 16 6
13 6 3
并将其转化为:
{{1}}
感谢
答案 0 :(得分:0)
此代码可实现您的目标。请注意,您需要.copy()
,因为动态修改了counts
。
import pandas as pd
import numpy as np
df = pd.DataFrame({'Distance': [0,0,0,0,0,10,0,0,0,0,16,0,0,6]})
non_zeros = df['Distance'].values != 0
zeros = ~non_zeros
counts = np.cumsum(zeros)[non_zeros]
counts[1:] -= counts[:-1].copy()
df = df[non_zeros]
df['count'] = counts
print(df)
此代码生成输出
Distance count
5 10 5
10 16 4
13 6 2
您可能需要在+1
列中添加count
。