首页 > 解决方案 > Pandas fillna() 不适用于 DataFrame 切片

问题描述

Pandasfillna不适用于 DataFrame 切片,这是一个示例

df = pd.DataFrame([[np.nan, 2, np.nan, 0],
                [3, 4, np.nan, 1],
                [np.nan, np.nan, np.nan, 5],
                [np.nan, 3, np.nan, 4]],
                columns=list('ABCD'))
df[["A", 'B']].fillna(0, inplace=True)

DataFrame不变_

    A   B   C   D
0   NaN 2.0 NaN 0
1   3.0 4.0 NaN 1
2   NaN NaN NaN 5
3   NaN 3.0 NaN 4

相比之下

df["A"].fillna(0, inplace=True)

df.fillna(0, inplace=True)

工作正常。

这是一个错误还是按预期工作?提前谢谢。

PS这个问题询问如何在切片上使用fillna,至于我的问题,它涉及为什么上述不起作用。答案在@heena-bawa 答案评论部分。

标签: pythonpandasdataframefillna

解决方案


如果我们看pandas documentation它说你应该fillna在切片上使用以下内容:

values = {'A':0, 'B':0}
df.fillna(value=values, inplace=True)

print(df)

     A    B   C  D
0  0.0  2.0 NaN  0
1  3.0  4.0 NaN  1
2  0.0  0.0 NaN  5
3  0.0  3.0 NaN  4

推荐阅读