2016-04-20 19 views
0

auf die Frage hier Verwandte: Reordering pandas dataframe based on multiple column and sum of one columnannehmen oberen Reihen in Pandas Datenrahmen basierend auf Gruppierung

Wie kann ich die Top-2-Ländern in diesem Datenrahmen akzeptieren, wenn sort Spalte: In diesem Fall sind die Besten 2 Länder Australien und Afghanistan sein

Country_FAO type mean_area  sort 
5 Australia car 12141000.0 18910501.0 
4 Australia car 6475695.0 18910501.0 
6 Australia bus 293806.0 18910501.0 
0 Afghanistan car 2029000.0 2141000.0 
1 Afghanistan car 112000.0 2141000.0 
2  Algeria bus 827000.0 829351.0 
3  Algeria bus  2351.0 829351.0 

--edit:

ich möchte auch die type Spalte behalten. In diesem Fall sollte die Lösung wie folgt aussehen:

Country_FAO type mean_area  sort 
5 Australia car 12141000.0 18910501.0 
4 Australia car 6475695.0 18910501.0 
6 Australia bus 293806.0 18910501.0 
0 Afghanistan car 2029000.0 2141000.0 
1 Afghanistan car 112000.0 2141000.0 

Antwort

1

UPDATE:

In [166]: df.loc[df.Country_FAO.isin(df.groupby('Country_FAO').sum().nlargest(2, 'mean_area').index)] 
Out[166]: 
    Country_FAO type mean_area  sort 
5 Australia car 12141000.0 18910501.0 
4 Australia car 6475695.0 18910501.0 
6 Australia bus 293806.0 18910501.0 
0 Afghanistan car 2029000.0 2141000.0 
1 Afghanistan car 112000.0 2141000.0 

ich würde es auf diese Weise tun:

In [153]: df.groupby('Country_FAO').sum() 
Out[153]: 
       mean_area 
Country_FAO 
Afghanistan 2141000.0 
Algeria  829351.0 
Australia 18910501.0 

In [154]: df.groupby('Country_FAO').sum().nlargest(2, 'mean_area') 
Out[154]: 
       mean_area 
Country_FAO 
Australia 18910501.0 
Afghanistan 2141000.0 

In [155]: df.groupby('Country_FAO').sum().nlargest(2, 'mean_area').index 
Out[155]: Index(['Australia', 'Afghanistan'], dtype='object', name='Country_FAO') 

auch, möchten Sie zurücksetzen Ihre Index:

In [156]: df.groupby('Country_FAO').sum().nlargest(2, 'mean_area').reset_index() 
Out[156]: 
    Country_FAO mean_area 
0 Australia 18910501.0 
1 Afghanistan 2141000.0 
+0

danke @MaxU, diese Lösung entfernt die 'type'-Spalte, gibt es eine Möglichkeit, das zu behalten? – user308827

+0

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

+0

Dank @MaxU, das funktioniert! – user308827

Verwandte Themen