【发布时间】:2019-02-02 06:10:08
【问题描述】:
我正在尝试迭代 df 中的行并在某个值为 NaN 或 0 时计算连续行,如果该值将从 NaN 或 0 更改,则重新开始计数。我想得到这样的东西:
Value Period
0 1
0 2
0 3
NaN 4
21 NaN
4 NaN
0 1
0 2
NaN 3
我编写了一个函数,它接受一个数据框作为参数,并用一个表示计数的附加列返回它:
def calc_period(df):
period_x = []
sum_x = 0
for i in range(1,df.shape[0]):
if df.iloc[i,0] == np.nan or df.iloc[i,0] == 0:
sum_x += 1
period_x.append(sum_x)
else:
period_x.append(None)
sum_x = 0
period_x.append(sum_x)
df['period_x'] = period_x
return df
当值为 0 时,该函数运行良好。但当值为 NaN 时,计数也是 NaN,我得到以下结果:
Value Period
0 1
0 2
0 3
NaN NaN
NaN NaN
【问题讨论】:
-
你不能 replace NaNs with 0s 使用
fillna
标签: python-3.x pandas numpy nan