python - 熊猫:在组内聚合之前排序
问题描述
我有以下熊猫数据框:
A B C
A A Test1
A A Test2
A A XYZ
A B BA
A B AB
B A AA
我想对这个数据集进行两次分组:首先由 A 和 B 连接 C 内的组,然后仅在 A 上获得仅由 A 列定义的组。结果如下所示:
A A Test1,Test2,XYZ
A B AB, BA
B A AA
最终结果应该是:
A A,A:(Test1,Test2,XYZ), A,B:(AB, BA)
B B,A:(AA)
连接本身有效,但排序似乎不起作用。
谁能帮我解决这个问题?
亲切的问候。
解决方案
使用groupby
+join
s1=df.groupby(['A','B']).C.apply(','.join)
s1
Out[421]:
A B
A A Test1,Test2,XYZ
B BA,AB
B A AA
Name: C, dtype: object
s1.reset_index().groupby('A').apply(lambda x : x.set_index(['A','B'])['C'].to_dict())
Out[420]:
A
A {('A', 'A'): 'Test1,Test2,XYZ', ('A', 'B'): 'B...
B {('B', 'A'): 'AA'}
dtype: object
推荐阅读
- sql - 如何降低复杂性?数据准备,SQL + Tableau
- terraform - Terraform For 表达式使用一个元组和两个字符串列表创建单个映射以在 for_each 中使用
- vue.js - 安装@vue/cli 时遇到一些问题
- python - df.to_sql 不工作 [HY04] - 无效的 SQL 数据类型 (0) (SQLBindParameter)
- python - 如何在kivy中显示和删除图像?
- python-3.x - SSL:WRONG_VERSION_NUMBER
- prolog - Prolog将字符串列表转换为数字列表
- firebase - 如果用户在运行时突然关闭应用程序,如何停止在 firebase 中执行查询或进程
- reactjs - 如何使用 ant design 动态生成选择组件的选项
- python - 模块“线性模型”的 ModuleNotFoundError