如果您想用mode
在某些列中是一个数据框df
,你可以只fillna http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html by Series
由选择创建,按位置选择iloc http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iloc.html:
cols = ["workclass", "native-country"]
df[cols]=df[cols].fillna(df.mode().iloc[0])
Or:
df[cols]=df[cols].fillna(mode.iloc[0])
您的解决方案:
df[cols]=df.filter(cols).fillna(mode.iloc[0])
Sample:
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