繁体   English   中英

大熊猫选择特定的群体

[英]pandas select specific groups

我有一个带有ID列和测量列的数据框

ID measurement
1 A
1 B
1 C
1 D
2 A
2 B
2 C
2 D
3 A
4 A
4 B
4 C
4 D
4 E

我想只选择每个ID具有完整度量(AD)的行,并删除每个ID具有较少(例如ID 3)或更多度量(例如ID 4)的行。

有没有一种有效的方法来实现这一目标?

In [92]: df.groupby('ID').filter(lambda x: set(x['measurement']) == set('ABCD'))
Out[92]:
   ID measurement
0   1           A
1   1           B
2   1           C
3   1           D
4   2           A
5   2           B
6   2           C
7   2           D

使用transform

In [1001]: df[df.groupby('ID')['measurement'].transform(lambda x: set(x) == set('ABCD'))]
Out[1001]:
   ID measurement
0   1           A
1   1           B
2   1           C
3   1           D
4   2           A
5   2           B
6   2           C
7   2           D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM