我有一个包含这种类型数据的数据框(列太多):
col1 int64
col2 int64
col3 category
col4 category
col5 category
列看起来像这样:
Name: col3, dtype: category
Categories (8, object): [B, C, E, G, H, N, S, W]
我想将每一列中的所有值都转换为整数,如下所示:
[1, 2, 3, 4, 5, 6, 7, 8]
我通过这个为一列解决了这个问题:
dataframe['c'] = pandas.Categorical.from_array(dataframe.col3).codes
现在我的数据框中有两列 - 旧的 col3
和新的 c
并且需要删除旧列。
这是不好的做法。它有效,但在我的数据框中有太多列,我不想手动进行。
我怎样才能更聪明地做到这一点?
原文由 Gilaztdinov Rustam 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,要将分类列转换为其数字代码,您可以使用以下命令更轻松地完成此操作:
dataframe['c'].cat.codes
。此外,可以使用
select_dtypes
自动选择数据框中具有特定数据类型的所有列。这样,您可以对多个自动选择的列应用上述操作。首先制作一个示例数据框:
然后通过使用
select_dtypes
选择列,然后应用.cat.codes
在这些列中的每一列上,您可以获得以下结果: