2016-04-19 15 views
0

gesetzt Meine Daten wie folgt aussiehtWie benutze ich Gruppen für Pandas, um eine Spalte zu erhalten, die einer Max-Spalte entspricht?

playerid,position,points 
1,pos1,10 
1,pos2,15 
1,pos3,4 

ich die Position für die Spieler zurückkehren wollen, für die sie die meisten Punkte erzielt. Ich kann group_by die meisten Punkte für einen bestimmten Spieler finden, aber wie bekomme ich die Position?

data.groupby(['playerid']).agg(np.max)['points'] 

Ich möchte sowohl playerid und Position

1,pos2 

Antwort

1

eine Art und Weise (unter vielen) zurückzukehren, das zu tun:

In [133]: df 
Out[133]: 
    playerid position points 
0   1  pos1  10 
1   1  pos2  15 
2   1  pos3  4 
3   2  pos1  2 
4   2  pos2  10 
5   2  pos3  18 

In [134]: df.loc[df.groupby('playerid')['points'].idxmax(), ['playerid','position']] 
Out[134]: 
    playerid position 
1   1  pos2 
5   2  pos3 
+0

ich beide pid wollen und pos, nicht nur die Position? – Dude

+0

@Dude, ich habe meine Antwort aktualisiert - bitte überprüfen – MaxU

Verwandte Themen