计算python数据帧中填充值之间的行数

时间:2016-06-23 01:18:33

标签: python pandas dataframe

我对熊猫还很新。我想计算零值的行数,直到下一行,其中包含一个值。例如,我想采用一个如下所示的数据框:

id    Distance     count
05    10            6
10    16            6
13    6             3

并将其转化为:

{{1}}

感谢

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