2017-05-18 5 views
0

Leute!So gruppieren Sie ähnliche Gruppen von Colum in Pandas

Ich habe Datenrahmen wie folgt aus:

ID | Name | Thing | belongs 
---+------+---------+-------- 
1 John  10  1 
2 Tom  10  2 
3 Tom  10  1 
4 John  10  2 
5 Bob  10  3 

ich kann nicht herausfinden, wie man es gerne Gruppe:

Tom,John 10 1,2 
Bob.  10 3 

ich sie vom User GROUPBY kann, aber krank zwei Gruppen bekommen anstelle von eins.

Antwort

0

Setup-

df = pd.DataFrame({'ID': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}, 
'Name': {0: 'John', 1: 'Tom', 2: 'Tom', 3: 'John', 4: 'Bob'}, 
'Thing': {0: 10, 1: 10, 2: 10, 3: 10, 4: 10}, 
'belongs': {0: 1, 1: 2, 2: 1, 3: 2, 4: 3}}) 

Lösung

#group by name, thing and then concat belongs 
df = df.groupby(by=['Name','Thing'])['belongs']\ 
       .apply(lambda x: ','.join(sorted(x.astype(str).tolist())))\ 
       .to_frame().reset_index() 

df.groupby(by=['Thing','belongs'])['Name']\ 
      .apply(lambda x: ','.join(x.tolist())).to_frame().reset_index() 

Out[1140]: 
    Thing belongs  Name 
0  10  1,2 John,Tom 
1  10  3  Bob 
+0

Ist es möglich, zu gruppieren sie durch "Ding", so dass ich zwei Gruppen haben nicht drei? – SystemFailure

+0

Nur aktualisiert. Es zeigt jetzt 2 Gruppen. – Allen

Verwandte Themen