python - Pandas:根据另一列中的索引列表添加一列来自其他列的值列表
问题描述
这是原始数据框,其中 group 包含每个人所属的 group 的索引值列表。
Name Group
0 Bob [0, 1]
1 April [0, 1]
2 Amy [2, 3]
3 Linda [2, 3]
这就是我想要的,我想为每个组创建名称值列表,并通过 df 与组列表值的索引映射将它们添加回 df
Name Group Group_Name
0 Bob [0, 1] [Bob, April]
1 April [0, 1] [Bob, April]
2 Amy [2, 3] [Amy, Linda]
3 Linda [2, 3] [Amy, Linda]
我尝试使用 for 循环创建名称列表并根据索引映射将它们附加回 df,但由于数据大小,它真的很慢。
如果您有更好的想法,请告知,并提前感谢!
解决方案
让我们使用
s=df.Group.map(tuple)
df['Group_Name']=df.groupby(df.Group.map(tuple)).Name.agg(list).reindex(s).values
df
Name Group Group_Name
0 Bob [0, 1] [Bob, April]
1 April [0, 1] [Bob, April]
2 Amy [2, 3] [Amy, Linda]
3 Linda [2, 3] [Amy, Linda]
推荐阅读
- terraform - 在 Mendix 上调用脚本
- css - CSS/chrome:有没有办法查看你在 devtools 元素中所做的所有 CSS 更改?
- c# - unity销毁后实例化
- php - PHP替换以xxx开头并在5个字符后以yyy结尾的字符串
- spring-boot - STOMP over WebSockets:Spring Boot 需要 JSON;NodeJs STOMP.js 客户端无法连接
- python - 图像字幕教程的问题
- angular - 将变量设置为相同值时是否进行角度触发变化检测
- sql - 如何使用 LIMIT 动态采样行
- delphi - 更新一组记录中的键字段时出现重复键错误
- python - 我试图让我的代码根据他们的区域识别火车站,但它只打印:当 xyz 在 Zone 2 时 xyz is in Zone1