python - 如何在 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
这样数据框将更有意义且更少稀疏,任何人都可以帮助我获得结果。数据集有数十亿条记录,因此一些有效的查询会有所帮助。提前致谢。
解决方案
按 分组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
推荐阅读
- pandas - pandas:每个日期时间(索引)集群的最大列值,集群内距离 <= N 分钟
- docker - 如何使用 img 文件创建 Docker 容器
- javascript - 如何使用javascript获取数据到动态表中的下拉列表
- excel - 如何在 VBA 中使用多维变量
- assembly - 禁用中断如何解决临界区问题?
- pine-script - 如何在 pine 脚本中获取合约乘数 - 交易视图
- javascript - 如何使用时刻 js 将时间格式设置为 HH:mm
- c# - 我有一个多行的 excel 表,每行的值都必须与 UI 数据进行比较?
- c# - 避免在 MVC razor 视图中重复相同的代码块两次
- javascript - 如何在javascript中等待一个内部有promise的函数?