2017-02-06 7 views
3

Ich habe einen Datenrahmen (df) mit folgenden Werten:Python Pandas Spalt Werte addiert, basierend auf Bedingung

    Title 
fintech_countries   
US     60 
UK     54 
India    28 
Australia   25 
Germany   13 
Singapore   11 
Canada    10 

Ich mag die Länder alle mit Werten < 25, hinzufügen und sie zeigen, wie ‚Andere‘ mit ihrem Summe (34).

ich einen Spaltennamen für die Länder durch den folgenden Code erstellt haben:

df1 = df.rename_axis('fintech_countries').rename_axis("countries", axis="columns" , inplace=True) 


countries   Title 
fintech_countries   
US     60 
UK     54 
India    28 
Australia   25 
Germany   13 
Singapore   11 
Canada    10 

Jetzt habe ich den folgenden Code auf einer anderen Abfrage auf Stackoverflow basiert versucht:

df1.loc[df1['Title'] < 25, "countries"].sum() 

aber bin immer die folgender Fehler:

KeyError: 'the label [countries] is not in the [columns]' 

Kann mir bitte jemand helfen? Ich brauche die endgültige Ausgabe als:

countries   Title 
fintech_countries   
US     60 
UK     54 
India    28 
Australia   25 
Others    34 

TIA

Antwort

3

Lösung mit loc für setting with enlargement und Filterung von boolean indexing:

mask = df['Title'] < 25 
print (mask) 
fintech_countries 
US   False 
UK   False 
India  False 
Australia False 
Germany  True 
Singapore  True 
Canada  True 
Name: Title, dtype: bool 

df1 = df[~mask].copy() 
df1.loc['Others', 'Title'] = df.loc[mask, 'Title'].sum() 
df1.Title = df1.Title.astype(int) 
print (df1) 
countries   Title 
fintech_countries  
US     60 
UK     54 
India     28 
Australia    25 
Others    34 
+0

Dank einer Tonne! Es funktionierte – chhibbz

Verwandte Themen