2017-07-14 168 views
1

我有一個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 3)或者每個ID的更多測量(例如ID 4)。

有沒有一種有效的方法來實現這一目標?

回答

2
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 
+1

不錯,狡猾的回答+1 – EdChum

+0

@EdChum,謝謝!感謝您的評論! – MaxU

1

使用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