首页 > 解决方案 > 如何在 pandas 中使用 df.get_dummies() 减少稀疏性

问题描述

以免假设我有以下数据框

   userID   product_id
0     1    a   
1     2    s
2     1    d 
3     1    f

现在如果我这样做pd.get_dummies(df, columns=['product_id']) ,我会得到以下结果

  userID   product_id_a product_id_s product_id_d product_id_f
0     1    1            0             0            0
1     2    0            1             0            0
2     1    0            0             1            0
3     1    0            0             0            1

因为只有 2 个唯一的用户 ID,所以我想要以下结果

  userID product_id_a product_id_s product_id_d product_id_f
0     1    1            0             1            1
1     2    0            1             0            0

这样数据框将更有意义且更少稀疏,任何人都可以帮助我获得结果。数据集有数十亿条记录,因此一些有效的查询会有所帮助。提前致谢。

标签: pythonpandas

解决方案


按 分组user id,然后使用str.get_dummies

res = df.groupby("userID").agg(",".join)



 (res
.product_id.str.get_dummies(",")
.add_prefix("product_id_")
.reset_index())

        userID       product_id_a   product_id_d    product_id_f    product_id_s
   0       1                1              1             1           0
   1       2                0              0             0           1

推荐阅读