熊猫数据框fillna()只有一些列到位

新手上路,请多包涵

我试图在 Pandas 数据框中只为某些列子集填充 0 值。

当我做:

 import pandas as pd
df = pd.DataFrame(data={'a':[1,2,3,None],'b':[4,5,None,6],'c':[None,None,7,8]})
print df
df.fillna(value=0, inplace=True)
print df

输出:

      a    b    c
0  1.0  4.0  NaN
1  2.0  5.0  NaN
2  3.0  NaN  7.0
3  NaN  6.0  8.0
     a    b    c
0  1.0  4.0  0.0
1  2.0  5.0  0.0
2  3.0  0.0  7.0
3  0.0  6.0  8.0

它将每个 None 替换为 0 。我想要做的是,只替换 None 列中的 ab ,而不是 c

这样做的最佳方法是什么?

原文由 Sait 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 863
2 个回答

您可以选择所需的列并通过分配来完成:

 df[['a', 'b']] = df[['a','b']].fillna(value=0)

结果输出如预期:

      a    b    c
0  1.0  4.0  NaN
1  2.0  5.0  NaN
2  3.0  0.0  7.0
3  0.0  6.0  8.0

原文由 root 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 dict , fillna 不同列的不同值

df.fillna({'a':0,'b':0})
Out[829]:
     a    b    c
0  1.0  4.0  NaN
1  2.0  5.0  NaN
2  3.0  0.0  7.0
3  0.0  6.0  8.0

分配回来后

df=df.fillna({'a':0,'b':0})
df
Out[831]:
     a    b    c
0  1.0  4.0  NaN
1  2.0  5.0  NaN
2  3.0  0.0  7.0
3  0.0  6.0  8.0

原文由 BENY 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题