我对Pandas和python还是比较陌生,我试图找出如何将Pandas Dataframe的所有内容(所有字段都是字符串)转换为分类对象。
在将行和列中的所有值转换为分类数字之前,必须将它们视为一个大的唯一数据集。
到目前为止,我已经能够编写以下代码
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循环仅适用于每列,而且我不确定分配的代码是针对每一列还是整个数据帧都是唯一的(后者是所需的操作)。
考虑到数据框的所有值,您能否提供建议,说明我如何将代码转换为唯一数字?
在此先感谢您的帮助。 问候 亚历克斯
答案 0 :(得分:1)
使用DataFrame.stack
和Series.unstack
将MultiIndex Series
设置为唯一值:
cols = df.select_dtypes('object').columns
df[cols] = df[cols].stack().astype('category').cat.codes.unstack()