我有2列:
当我在以上两列上执行pd.get_dummies()
时,只有“性别”被编码为两列。但是get_dummies函数不能转换“类”。
我也希望将“类”转换为10个虚拟列,类似于“一次热编码”。
这是预期的行为吗?有解决方法吗?
答案 0 :(得分:2)
您可以将值转换为字符串:
df1 = pd.get_dummies(df.astype(str))
答案 1 :(得分:2)
如果您不想转换数据,则可以在 get_dummies 中使用'columns'参数。这是快速演练:
以下是根据您的描述复制的数据框:
sex_labels = ['male', 'female']
sex_col = [sex_labels[i%2] for i in range(10)]
class_col = [i for i in range(10)]
df = pd.DataFrame({'sex':sex_cols, 'class':class_col})
df.sex = pd.Categorical(df.sex)
dtypes是:
print(df.dtypes)
sex category
class int64
dtype: object
应用get_dummies:
df = pd.get_dummies(df, columns=['sex', 'class'])
验证:
print(df.columns)
输出:
Index(['sex_female', 'sex_male', 'class_0',
'class_1','class_2','class_3','class_4','class_5',
'class_6','class_7','class_8','class_9'],dtype='object')
根据文档https://pandas.pydata.org/pandasdocs/stable/reference/api/pandas.get_dummies.html
如果columns为None,则所有具有object或category dtype的列 将被转换
这就是为什么您只在性别栏看到假人而不在班上看到假人的原因。
希望这会有所帮助。学习愉快!
注意:已通过熊猫版本“ 0.25.2”测试