如何在Pandas中同时使用ffill和bfill并原地修改DataFrame?
如何同时使用ffill和bfill填充NaN并实现原地修改?
Pandas中没有内置的fbfill方法,但可以通过以下几种方式实现同时双向填充NaN,并且支持原地修改:
方法1:连续调用两次fillna
先执行向前填充(ffill),再执行向后填充(bfill),两次操作都设置inplace=True即可完成原地修改:
final_df.fillna(method='ffill', inplace=True) final_df.fillna(method='bfill', inplace=True)
填充顺序不影响最终结果,先bfill再ffill也能达到同样效果,不管数据首尾是否存在NaN都能被完全填充。
方法2:使用快捷方法ffill()和bfill()
ffill()和bfill()是fillna(method='ffill')、fillna(method='bfill')的快捷写法,同样支持inplace参数:
final_df.ffill(inplace=True) final_df.bfill(inplace=True)
自定义便捷方法fbfill
如果觉得每次写两次操作麻烦,可以封装一个自定义函数实现类似fbfill的效果:
def fbfill(df, inplace=False): if inplace: df.ffill(inplace=True) df.bfill(inplace=True) else: return df.ffill().bfill() # 调用示例(原地修改) fbfill(final_df, inplace=True)
内容的提问来源于stack exchange,提问作者Beck
相关产品推荐
相关产品推荐

