在处理人口普查数据时,我想将两列(“workclass”和“native-country”)中的NaN替换为这两列各自的模式。我可以很容易地获得模式:
mode = df.filter(["workclass", "native-country"]).mode()
其返回 Dataframe :
workclass native-country
0 Private United-States
然而,在一些情况下,
df.filter(["workclass", "native-country"]).fillna(mode)
- 不**用任何东西替换每一列中的NaN,更不用说对应于该列的模式了。有没有一种简单的方法可以做到这一点?
5条答案
按热度按时间wa7juj8i1#
如果要在 Dataframe
df
的某些列中使用mode
插补缺失值,您只需通过按iloc
的位置选择创建fillna
bySeries
:或者:
您的解决方案:
样品:
3hvapo4f2#
你可以这样做:
例如,
则
df
为然后通过执行以下操作:
我们得到
df
是vmpqdwk33#
我认为使用dict作为fillna参数'value'是最简洁的方法
参考:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html
从@miriam-farber的响应创建一个玩具df
颁布法令
在fillna方法中使用此dict
k3bvogb14#
此代码将平均值插补到int列,将模式插补到object列,生成两种类型列的列表,并根据条件插补缺失值。
nbnkbykc5#
您也可以使用SimpleImputer来解决此问题,如下所示: