python - 根据多列分组聚合列的唯一值并计算唯一值 - 熊猫
问题描述
ID col1 col2 col3
I1 1 0 1
I2 1 0 1
I3 0 1 0
I4 0 1 0
I5 0 0 1
这是我的数据框。我期待根据 col1、col2、col3 的 group by 聚合 ID 值,并且还想要一个计数列。
预期输出:
ID_List Count
[I1,I2] 2
[I3,I4] 2
[I5] 1
我的代码
cols_to_group = ['col1','col2','col3']
data = pd.DataFrame(df.groupby(cols_to_group)['id'].nunique()).reset_index(drop=True)
data.head()
ID
0 2
1 2
2 1
解决方案
你可以做一个groupby.agg()
:
df.groupby(['col1','col2','col3'], sort=False).ID.agg([list,'count'])
输出:
list count
col1 col2 col3
1 0 1 [I1, I2] 2
0 1 0 [I3, I4] 2
0 1 [I5] 1
推荐阅读
- python - Selenium for 循环只执行一次
- excel - 使用 EXCEL 计算依赖于行中其他单元格的单元格 - 创建矩阵
- git - 如何忽略文件夹中不以@开头的所有目录?
- mongodb - 运行使用 python 编写为字符串的 mongo 查询,而不使用任何库函数(find_one 等)
- aws-lambda - 错误:“无服务器离线:找不到路由。” 尝试使用无服务器离线运行 Angular 9 Universal 时
- sql - 如何删除 PosgreSQL 中的镜像结果?
- python - 熊猫替换不替换整个字符串
- c++ - 无法使用几何着色器
- php - Ajax 调用错误不允许我查看表单中缺少的详细信息
- java - 当我在 Android Studio 中将一个页面导航到另一页面时,如何从 WebView 中删除导航?