python - 具有每列模式的多列 Pandas Fillna

标签 python pandas numpy data-science

处理人口普查数据时,我想用这两列各自的模式替换两列(“workclass”和“native-country”)中的 NaN。我可以轻松获得这些模式:

mode = df.filter(["workclass", "native-country"]).mode()

它返回一个数据框:

  workclass native-country
0   Private  United-States

但是,

df.filter(["workclass", "native-country"]).fillna(mode)

不会用任何东西替换每列中的 NaN,更不用说与该列对应的模式了。有没有一种流畅的方法可以做到这一点?

最佳答案

如果你想在数据帧 df 的某些列中用 mode 填充缺失值,你可以只 fillnaSeries 创建,由 iloc 的位置选择:

cols = ["workclass", "native-country"]
df[cols]=df[cols].fillna(df.mode().iloc[0])

或者:

df[cols]=df[cols].fillna(mode.iloc[0])

您的解决方案:

df[cols]=df.filter(cols).fillna(mode.iloc[0])

示例:

df = pd.DataFrame({'workclass':['Private','Private',np.nan, 'another', np.nan],
                   'native-country':['United-States',np.nan,'Canada',np.nan,'United-States'],
                   'col':[2,3,7,8,9]})

print (df)
   col native-country workclass
0    2  United-States   Private
1    3            NaN   Private
2    7         Canada       NaN
3    8            NaN   another
4    9  United-States       NaN

mode = df.filter(["workclass", "native-country"]).mode()
print (mode)
  workclass native-country
0   Private  United-States

cols = ["workclass", "native-country"]
df[cols]=df[cols].fillna(df.mode().iloc[0])
print (df)
   col native-country workclass
0    2  United-States   Private
1    3  United-States   Private
2    7         Canada   Private
3    8  United-States   another
4    9  United-States   Private

关于python - 具有每列模式的多列 Pandas Fillna,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42870536/

相关文章:

python - data = batch ['data' .cuda().function().cpu() 有意义吗?

python - ValueError : You are trying to merge on datetime64[ns] and object columns. 如果你想继续你应该使用 pd.concat

Python 和 Pandas 查询 API 和更新数据库

python - numpy interp 减少 xp

Python - 通过 SSH 运行时字符串变形

python - 如何将 json 文件中的特定键插入到 Python 中的数据框中

python - 属性错误 : 'Series' object has no attribute 'as_matrix' Why is it error?

python - 维持某些元素顺序的排列

python - 使用plotly保护数据隐私

python - 原始错误是 : DLL load failed while importing _multiarray_umath