用上一个/下一个值填充 Na 在列中 +- 100

时间:2021-05-03 08:32:00

标签: python python-3.x pandas dataframe

我有一个 df 列,如下所示:

**Price**
1000
NaN
NaN
NaN
1500
NaN

我想用以前的值填充 NaN 再加上 100。所以它看起来像这样:

**Price**
    1000
    1100
    1200
    1300
    1500
    1600

我已经试过了:

df['Price'] = df['Price'].fillna(df['Price'].ffill()+100)

如果价格值之间只有一个缺失值,它就会起作用。我想要一些可以在存在的值之间处理多个缺失值的东西,如果列中的第一个值是 NaN 我希望它由从下一个值中减去 100 的结果填充。 感谢您的帮助,感激不尽。

1 个答案:

答案 0 :(得分:3)

通过使用 GroupBy.cumcount、多个 100 测试不缺失值生成的组使用 Series.cumsum 并添加到向前填充缺失值:

s = df.groupby(df['Price'].notna().cumsum()).cumcount().mul(100)
df['Price'] = df['Price'].ffill() + s

print (df)
    Price
0  1000.0
1  1100.0
2  1200.0
3  1300.0
4  1500.0
5  1600.0