python - 用上一个/下一个值 +- 100 填充 Na 的列

标签 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 的结果填充。 感谢您的帮助,非常感谢。

最佳答案

使用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/

相关文章:

python - 字典的键的交集是什么

python - 如何暴力破解一棵 'yes/no' 决策树?

python - PyCharm: "self...."上的自动完成功能不起作用,因为使用了 with_metaclass()

python - 如何根据正则表达式条件编辑文本文件的行?

python - 通过具有变化模式的文本行进行正则表达式

javascript - 如何在 Braintree JS 安全自定义表单中发布 "amount"变量?

python - 当前房间内 Sprite 的碰撞检测

python - 类集中 "__and__"和 "__rand__"有什么区别?

python - Pandas groupby 到 to_csv

python - 如何按职位过滤数据集?