Ich habe einen Datenrahmen, der so aussieht:
Company Name Organisation Name Amount
10118 Vifor Pharma UK Ltd Welsh Assoc for Gastro & Endo 2700.00
10119 Vifor Pharma UK Ltd Welsh IBD Specialist Group, 169.00
10120 Vifor Pharma UK Ltd West Midlands AHSN 1200.00
10121 Vifor Pharma UK Ltd Whittington Hospital 63.00
10122 Vifor Pharma UK Ltd Ysbyty Gwynedd 75.93
Wie summiere Amount
und zähle ich die Organisation Name
, um einen neuen Datenrahmen zu erhalten, der so aussieht?
Company Name Organisation Count Amount
10118 Vifor Pharma UK Ltd 5 11000.00
Ich weiß, wie man summiert oder zählt:
df.groupby('Company Name').sum()
df.groupby('Company Name').count()
Aber nicht wie man beides macht!
df['count'] = 1
df.groupby(df['L2 Name'])[["Amount arrear","VSU"]].agg(['sum','count'])
Nur für den Fall, dass Sie sich gefragt haben, wie Spalten während der Aggregation umbenannt werden sollen, erfahren Sie hier, wie
pandas> = 0,25: Benannte Aggregation
df.groupby('Company Name')['Amount'].agg(MySum='sum', MyCount='count')
Oder,
df.groupby('Company Name').agg(MySum=('Amount', 'sum'), MyCount=('Amount', 'count'))
MySum MyCount Company Name Vifor Pharma UK Ltd 4207.93 5
quelle
Wenn Sie viele Spalten haben und nur eine anders ist, können Sie Folgendes tun:
In[1]: grouper = df.groupby('Company Name') In[2]: res = grouper.count() In[3]: res['Amount'] = grouper.Amount.sum() In[4]: res Out[4]: Organisation Name Amount Company Name Vifor Pharma UK Ltd 5 4207.93
Beachten Sie, dass Sie die Spalte Organisationsname nach Belieben umbenennen können.
quelle
df.groupby('Company Name').agg({'Organisation name':'count','Amount':'sum'})\ .apply(lambda x: x.sort_values(['count','sum'], ascending=False))
quelle