为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶刀刀 2021-08-24 17:27:49
假设我有一个由这两列组成的数据框。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请帮忙!对不起,如果我没有以正确的格式发布问题谢谢!
查看完整描述

2 回答

?
慕勒3428872

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


查看完整回答
反对 回复 2021-08-24
?
FFIVE

TA贡献1797条经验 获得超6个赞

如果您不需要不出现的值,一个简单的方法是使用pd.get_dummies

pd.get_dummies(df.hotel_cluster, prefix = 'hotel_cluster').set_index(df.User_id)

否则,您需要类似@piRSquared 的解决方案。


查看完整回答
反对 回复 2021-08-24
  • 2 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信