2 回答
TA贡献1848条经验 获得超6个赞
IUC:
选项 1
首先更改'hotel_cluster'为包含不存在的类别的类别
col = 'hotel_cluster'
df[col] = pd.Categorical(df[col], categories=[0, 1, 2, 3])
pd.crosstab(*map(df.get, df)).add_prefix(f"{col}_")
hotel_cluster hotel_cluster_0 hotel_cluster_1 hotel_cluster_2 hotel_cluster_3
User_id
1 1 0 0 0
2 0 0 1 0
3 1 0 1 1
4 0 0 1 0
选项 2
之后重新索引 crosstab
pd.crosstab(*map(df.get, df)).reindex(
columns=range(4), fill_value=0
).add_prefix('hotel_cluster_')
hotel_cluster hotel_cluster_0 hotel_cluster_1 hotel_cluster_2 hotel_cluster_3
User_id
1 1 0 0 0
2 0 0 1 0
3 1 0 1 1
4 0 0 1 0
TA贡献1797条经验 获得超6个赞
如果您不需要不出现的值,一个简单的方法是使用pd.get_dummies
:
pd.get_dummies(df.hotel_cluster, prefix = 'hotel_cluster').set_index(df.User_id)
否则,您需要类似@piRSquared 的解决方案。
添加回答
举报