我的数据框在下面。
id gender region income a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
1 male N 300 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 female S 500 7 10 10 10 6 6 6 8 5 9
3 male E 200 6 NaN 9 6 6 NaN 7 7 7 9
4 female W 100 9 7 7 NaN 7 8 8 8 NaN 5
我想将多列的数据类型分类更改为整数。 (a1~a10) 所以,我尝试了下面的代码,但出现如下错误
df.iloc[:, 4: ].astype('int')
ValueError: cannot convert float NaN to integer
我怎样才能隐藏这个?
谢谢。
最佳答案
如果可以使用 pandas 0.24+,请使用 Nullable integer data type , 也是必要的 .astype(float)
用于将分类列转换为数字:
df.iloc[:, 4: ] = df.iloc[:, 4: ].astype(float).astype("Int64")
print (df)
id gender region income a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
0 1 male N 300 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 2 female S 500 7 10 10 10 6 6 6 8 5 9
2 3 male E 200 6 NaN 9 6 6 NaN 7 7 7 9
3 4 female W 100 9 7 7 NaN 7 8 8 8 NaN 5
如有必要,用每列最常见的值替换缺失值:
df.iloc[:, 4: ] = df.iloc[:, 4: ].fillna(df.iloc[:, 4: ].mode().iloc[0]).astype(int)
print (df)
id gender region income a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
0 1 male N 300 6 7 7 6 6 6 6 8 5 9
1 2 female S 500 7 10 10 10 6 6 6 8 5 9
2 3 male E 200 6 7 9 6 6 6 7 7 7 9
3 4 female W 100 9 7 7 6 7 8 8 8 5 5
关于python - 如何在 python 中将分类列转换为整数列? (与南),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59817577/