2017-09-08 3 views
-1

Hier ist das, was ich zu tun versuchen, Beispieldaten in einem Pandas Datenrahmen sagen df ist:Aggregieren von Werten und Summen in einem Pandas Datenrahmen

ID Date Amount 

A 5/11/16  5 
B 12/10/16 27 
B 13/10/16 45 
B 14/10/16 2 
A 5/12/16  89 
C 28/1/16  34 
D 29/8/16  12 
D 20/5/16  12 
C 2/1/17  90 

Für jede ID, möchte ich den Unterschied von Daten (Anzahl der Tage) in einer Liste, Beträge in einer anderen Liste, Summe der Beträge in der endgültigen Liste.

Ausgang sein:

A [30] [5,89] [94] 

B [01,01] [27,45,2] [74].. 

Ich versuchte Gruppe databy.

df = df.groupby ('ID') [ 'Anzahl'] gelten (Liste)

das gibt Ich Daten nach ID und Menge in einer Liste gruppiert, aber ich bin nicht in der Lage, herauszufinden, wie Diff in Daten erhalten.

+1

Was ist Ihre Frage? Was hast du versucht? Was hat nicht funktioniert? – DyZ

+0

aktualisiert jetzt .... –

Antwort

0

Sie könnten groupby ID und die ein paar Aggregationen durchführen.

df.Date = pd.to_datetime(df.Date, format='%d/%m/%y') # convert to a date column 
df = df.groupby('ID').agg({'Date' : lambda x: x.diff().dropna().dt.days, \ 
          'Amount' : [lambda y: y.values.tolist(), 'sum']}) 
df.columns = ['Diff', 'Amount', 'Total'] 

df 

     Diff  Amount Total 
ID        
A  30  [5, 89]  94 
B [1, 1] [27, 45, 2]  74 
C  340  [34, 90] 124 
D  -101  [12, 12]  24 
Verwandte Themen