如何解决这个不断变化的数据框问题

假设我有一个由这两列组成的数据框。


User_id hotel_cluster 

   1     0

   2     2

   3     2

   3     3 

   3     0

   4     2

我想把它改成这样。我需要编写一个函数还是有一种熊猫的方法来做到这一点?


User_id hotel_cluster_0 hotel_cluster_1 hotel_cluster_2 hotel_cluster_3

  1          1                  0             0              0

  2          0                  0             1              0

  3          1                  0             1              1

  4          0                  0             1              0

请帮忙!对不起,如果我没有以正确的格式发布问题谢谢!


蝴蝶刀刀
浏览 187回答 2
2回答

慕勒3428872

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_3User_id                                                                          1                            1                0                0                02                            0                0                1                03                            1                0                1                14                            0                0                1                0选项 2之后重新索引 crosstabpd.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_3User_id                                                                          1                            1                0                0                02                            0                0                1                03                            1                0                1                14                            0                0                1                0

FFIVE

如果您不需要不出现的值,一个简单的方法是使用pd.get_dummies:pd.get_dummies(df.hotel_cluster, prefix = 'hotel_cluster').set_index(df.User_id)否则,您需要类似@piRSquared 的解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python