2017-07-16 5 views
1

I Funktion tue, wo ich von ID und Addition der $ Wert mit diesen IDs mit diesem Code für Python assoziiert bin Gruppierung:Gruppe von Sum als neue Spaltenname

df = df.groupby([' Id'], as_index=False, sort=False)[["Amount"]].sum(); 

aber es tut die Spalte umbenennen. Als solches Ich habe versucht dies zu tun:

`df = df.groupby([' Id'], as_index=False, sort=False)`[["Amount"]].sum();.reset_index(name ='Total Amount') 

aber es gab Fehler mir das Typeerror: reset_index() bekam ein unerwartetes Stichwort Argument ‚name‘

Also habe ich versucht, diese schließlich folgende Beitrag tun: Python Pandas Create New Column with Groupby().Sum()

df = df.groupby(['Id'])[["Amount"]].transform('sum'); 

aber es hat immer noch nicht funktioniert.

Was mache ich falsch?

Antwort

1

Ich glaube, Sie entfernen müssen Parameter as_index=False und verwenden Series.reset_index, da dieser Parameter df zurückkehren und dann DataFrame.reset_index mit dem Parameter name fehlgeschlagen:

df = df.groupby('Id', sort=False)["Amount"].sum().reset_index(name ='Total Amount') 

Oder rename Säule zuerst:

d = {'Amount':'Total Amount'} 
df = df.rename(columns=d).groupby('Id', sort=False, as_index=False)["Total Amount"].sum() 

Probe:

df = pd.DataFrame({'Id':[1,2,2],'Amount':[10, 30,50]}) 
print (df) 
    Amount Id 
0  10 1 
1  30 2 
2  50 2 

df1 = df.groupby('Id', sort=False)["Amount"].sum().reset_index(name ='Total Amount') 
print (df1) 
    Id Total Amount 
0 1   10 
1 2   80 

d = {'Amount':'Total Amount'} 
df1 = df.rename(columns=d).groupby('Id', sort=False, as_index=False)["Total Amount"].sum() 
print (df1) 
    Id Total Amount 
0 1   10 
1 2   80 

Aber wenn brauchen neue Spalte mit sum in Original df Verwendung transform und weisen Ausgabe neue Spalte:

df['Total Amount'] = df.groupby('Id', sort=False)["Amount"].transform('sum') 
print (df) 
    Amount Id Total Amount 
0  10 1   10 
1  30 2   80 
2  50 2   80 
Verwandte Themen