替代fillna(method='pad', inplace=True)规避FutureWarning的方案
解决pandas中
fillna(method='pad')的FutureWarning问题 你遇到的警告是因为pandas已弃用fillna的method参数以及pad()方法,官方明确推荐用ffill()(forward fill的缩写)替代——它和pad功能完全一致,都是用前一个有效值填充NaN值。
正确替代代码
把原来的df.fillna(method='pad', inplace=True)替换成:
df.ffill(inplace=True)
如果不想用inplace=True(官方更推荐返回新对象的方式,避免修改原数据的副作用),也可以写成:
df = df.ffill()
为什么bfill不符合预期?
bfill()是后向填充,用下一个有效值填充NaN,和你需要的“前一个有效值填充”逻辑完全相反,所以结果自然不对。
验证效果
运行修改后的完整代码:
import pandas as pd import numpy as np df = pd.DataFrame({"Col1":["A", np.nan, 1, np.nan], "Col2":["B", np.nan, "C", np.nan]}) df.ffill(inplace=True) print(df)
输出结果和原fillna(method='pad')完全一致:
Col1 Col2 0 A B 1 A B 2 1 C 3 1 C
且不会再出现FutureWarning。
内容的提问来源于stack exchange,提问作者Gооd_Mаn
相关产品推荐
相关产品推荐

