python - 如何在 python 中将分类列转换为整数列? (与南)

标签 python pandas types nan

我的数据框在下面。

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/

相关文章:

python - Pandas DataFrame,将复杂函数智能应用于 groupby 结果

python - Pandas :有效地获得所有正增量值

ios - Xcode - 以 64 位编译应用程序时发生错误

typescript 中的类构造函数类型?

python CFFI : Build single module from multiple source files

python - 计算网格上两点之间恰好有 `n` 个节点的最短路径

python - python中的日期时间差异

python - 使用唯一列值作为键将 Pandas Dataframe 转换为_dict()

python - 在 Pandas 数据框中对子组中的行进行排名的更快方法

c - 关于 `size_t`和它们测量的指针类型