我有一个 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 的结果填充。 感谢您的帮助,感激不尽。
答案 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