Pandas,将所有数据框转为唯一的分类值

Pandas, turn all the data frame to unique categorical values

我对 Pandas 和 python 比较陌生,我正在尝试找出如何将 Pandas 数据框的所有内容(所有字段都是字符串)转换为分类一.

在将行和列中的所有值转换为分类数字之前,必须将它们视为一个大的唯一数据集。

到目前为止,我能够编写以下代码

for col_name in X.columns:
    if(X[col_name].dtype == 'object'):
        X[col_name]= X[col_name].astype('category')
        X[col_name] = X[col_name].cat.codes

适用于多列数据框 X。它获取字符串并将它们转换为唯一数字。

我不确定上面的代码是我的 for 循环只适用于每列,我不确定分配的代码是每列还是每整个数据框(后者是所需的操作)。

您能否就如何将我的代码转换为考虑到数据框的所有值来提供唯一数字提供建议?

在此先感谢您的帮助。 问候 亚历克斯

使用 DataFrame.stack with Series.unstackMultiIndex Series 设置为唯一值:

cols = df.select_dtypes('object').columns
df[cols] = df[cols].stack().astype('category').cat.codes.unstack()