2016-02-22 29 views
6

Mam podstawowe pytania w języku Python.Znajdź wiersze, które mają te same wartości w innej kolumnie - Python

Mam dataframe pandy takiego:

ID | Name | User_id 
---+------+-------- 
1 John  10 
2 Tom  11 
3 Sam  12 
4 Ben  13 
5 Jen  10 
6 Tim  11 
7 Sean  14 
8 Ana  15 
9 Sam  12 
10 Ben  13 

chcę uzyskać nazwy i identyfikatory użytkowników, które dzielą tę samą wartość dla user_id, bez powrotu nazwiska, które pojawiają się dwa razy. Więc chciałbym wyjście wyglądać mniej więcej tak:

John Jen 10 
Tom Tim 11 
+0

'bez powrotu nazwiska, które pojawiają twice' -> co masz na myśli? Co się stało z Seanem? –

Odpowiedz

8

IIUC można zrobić to w ten sposób, groupby na „user_id”, a następnie filtrować GroupBy:

In [54]: 
group = df.groupby('User_id')['Name'].unique() 

In [55]: 
group[group.apply(lambda x: len(x)>1)] 

Out[55]: 
User_id 
10 [John, Jen] 
11  [Tom, Tim] 
Name: Name, dtype: object 
+0

Tego właśnie szukałem! Dzięki EdChum! –