python - 按另一列分组时获取一列不同元素的数量
问题描述
我正在使用这个熊猫数据框:
Id nb sampleId
0 A 1 sA
1 B 2 sB
2 C 3 sD
3 D 4 sF
4 D 5 sF
5 A 6 sF
6 E 7 sF
7 F 8 sO
8 G 9 SP
9 H 10 SS
10 I 11 sK
11 C 12 sL
我正在尝试将另一个数据框分组Id
为第一列,并将不同的数量sampleId
作为第二列。所以我想要的输出是这样的:
Id sampleId
0 A 2
1 B 1
2 C 2
3 D 1
4 E 1
5 F 1
6 G 1
7 H 1
8 I 1
我试过这个:
df2=df.groupby(['Id'])['sampleId'].count().reset_index()
这只是计算每个Id
重复的次数,而不是我正在寻找的(如您所见,元素 D 似乎在两个不同的 sampleId 中重复,而实际上它在同一个 sampleId 中出现了两次):
srcId sampleId
0 A 2
1 B 1
2 C 2
3 D 2
4 E 1
5 F 1
6 G 1
7 H 1
8 I 1
我怎样才能做到这一点?
解决方案
利用 -
df.groupby(['Id'])['sampleId'].nunique().reset_index()
输出
Id sampleId
0 A 2
1 B 1
2 C 2
3 D 1
4 E 1
5 F 1
6 G 1
7 H 1
8 I 1
推荐阅读
- python - 日志文件中的持续时间阈值
- python - 在寡妇中使用python列出目录中的所有文件
- python - Python3:为什么我的代码没有正确迭代?for/in 循环 + len(list[index])
- ios - 如何使用 SwiftUI 按钮打开本地 PDF 文件?
- ssl - 由于 OpenJDK Java 11 获得 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
- python - TensorFlow 2.0 中 tf.contrib.factorization.KMeans 的等效 API 是什么?
- amazon-web-services - 是否可以使用 athena-express 节点包将数据作为流读取?
- php - 如何在 HTML 表单元素中获取 PHP 变量
- timeline - Apexcharts - 条形图太小
- javascript - 减少本机基本输入行的长度