python - 使用 pandas GroupBy 聚合字符串列
问题描述
我有一个 DF,如下所示:
df =
vid pos value sente
1 a A 21
2 b B 21
3 b A 21
3 a A 21
1 d B 22
1 a C 22
1 a D 22
2 b A 22
3 a A 22
现在我想将所有具有相同值的行sente
合并vid
成一行,其中的值value
由一个" "
df2 =
vid pos value sente
1 a A 21
2 b B 21
3 b a A A 21
1 d a a B C D 22
2 b A 22
3 a A 22
我想对此进行修改应该可以解决问题:
df2 = df.groupby["sente"].agg(lambda x: " ".join(x))
但我似乎无法弄清楚如何将第二列添加到语句中。
解决方案
Groupers 可以作为列表传递。此外,您可以通过去掉 lambda 代码来稍微简化您的解决方案——它不是必需的。
df.groupby(['vid', 'sente'], as_index=False, sort=False).agg(' '.join)
vid sente pos value
0 1 21 a A
1 2 21 b B
2 3 21 b a A A
3 1 22 d a a B C D
4 2 22 b A
5 3 22 a A
其他一些注意事项:指定as_index=False
意味着您的分组将作为列出现在结果中(而不是作为索引,默认情况下)。此外,sort=False
将保留列的原始顺序。
推荐阅读
- vb.net - 使用 vs2010 开发的 Windows 工作流在迁移到 vs2017 后无法继续
- javascript - 在 Angular 客户端应用程序上渲染图像字节流
- angular - 在 ngOnInit() 方法中切换两个订阅
- javascript - 设置带有响应的标头
- javascript - 通过滚动动画导航
- jquery - Angular 7中的单元测试jQuery点击事件
- vba - 如何从 .dat 文件中提取或查看数据?
- python - 无法使用 Keras Dense 层 ANN 从固定阈值提高准确度
- objective-c - 如何实例化私有/隐藏的Objective C框架类?
- python - 使用 Pandas 从 BigQuery 呈现 JSON 响应?