2016-09-14 74 views
1

我有一個數據幀:如何在同一個數據框的另一列中查找包含唯一值的列值?

Id name value 
0 1 aaa x 
1 2 aaa y 
2 3 aaa z 
3 4 ddd t 
4 5 ddd t 
5 6 fff j 
6 7 ggg m 
7 8 ggg n 

我想找到只有那些行,其名稱重複,併爲這些重複行的值不同。

預期輸出:

Id name value 
0 1 aaa x 
1 2 aaa y 
2 3 aaa z 
3 7 ggg m 
4 8 ggg n 

我試圖用groupby

df.groupby('name') 

是這個任務此GROUPBY功能有用?我如何才能實現我想要的?

回答

1

這行代碼將通過名稱計值的數量:

df.groupby('name')['value'].transform(pd.Series.nunique) 
Out[8]: 
0 3 
1 3 
2 3 
3 1 
4 1 
5 1 
6 2 
7 2 

請注意,我的groupby對象使用.transform(pd.Series.nunique)而不是簡單地.nunique()。這樣,結果將與原始數據幀長度相同,並且您可以直接使用它進行過濾:

df[df.groupby('name')['value'].transform(pd.Series.nunique) > 1] 
Out[9]: 
    Id name value 
0 1 aaa  x 
1 2 aaa  y 
2 3 aaa  z 
6 7 ggg  m 
7 8 ggg  n 
+0

正確。謝謝。 – kit

相關問題