首页 > 解决方案 > 如何更新熊猫中的多列

问题描述

我有 DF 有 5 列。3列是字符类型,其他是数字类型。我想更新字符类型列的缺失值是“缺失的”。

我已经写了如下的更新声明,但它不起作用。

df.select_dtypes(include='object') = df.select_dtypes(include='object').apply(lambda x: x.fillna('missing'))

只有当我指定列名时它才有效。

df[['Manufacturer','Model','Type']] = df.select_dtypes(include='object').apply(lambda x: x.fillna('missing'))

你能告诉我如何更正我的第一个更新声明吗?

标签: pandas

解决方案


这里df.select_dtypes(include='object')返回 new DataFrame,所以不能像第一个答案那样分配,可能的解决方案是使用DataFrame.update(就地工作),apply这里也没有必要。

print (df)
  Manufacturer Model Type  a    c
0            a     g  NaN  4  NaN
1          NaN   NaN   aa  4  8.0

df.update(df.select_dtypes(include='object').fillna('missing'))
print (df)
  Manufacturer    Model     Type  a    c
0            a        g  missing  4  NaN
1      missing  missing       aa  4  8.0

或者使用 s 获取列名,string例如:

cols = df.select_dtypes(include='object').columns
df[cols] = df[cols].fillna('missing')
print (df)

推荐阅读