问题描述
我知道每个列的填充代码如下
data['Native Country'].fillna(data['Native Country'].mode(),inplace=True)
但我正在处理一个有 50 行的数据集,有 20 个分类值需要估算。 是否有单行代码用于输入整个数据集?
解决方法
将 DataFrame.fillna
与 DataFrame.mode
一起使用并选择第一行,因为如果返回所有值的最大出现次数相同:
data = pd.DataFrame({
'A':list('abcdef'),'col1':[4,5,4,4],'col2':[np.nan,8,3,2,3],'col3':[3,np.nan,np.nan],'E':[5,6,9,'F':list('aaabbb')
})
cols = ['col1','col2','col3']
print (data[cols].mode())
col1 col2 col3
0 4 3.0 3.0
1 5 NaN 5.0
data[cols] = data[cols].fillna(data[cols].mode().iloc[0])
print (data)
A col1 col2 col3 E F
0 a 4 3.0 3.0 5 a
1 b 5 8.0 3.0 3 a
2 c 4 3.0 5.0 6 a
3 d 5 3.0 5.0 9 b
4 e 5 2.0 3.0 2 b
5 f 4 3.0 3.0 4 b