我有一个 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 的结果填充。 感谢您的帮助,非常感谢。
最佳答案
使用GroupBy.cumcount
通过使用 Series.cumsum
测试不缺失值生成的组,多个 100
并添加到前向填充缺失值:
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
关于python - 用上一个/下一个值 +- 100 填充 Na 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67365819/