2016-11-17 3 views
2

Bei einem Datenrahmen:Pandas sampeln und fügen Sie Größe als Spalte

Index  A B 
2016-01-01 5 10 
2016-01-01 1 2 
2016-01-02 1 1 

Ist es möglich, den Datenrahmen mit Summen- und fügen Sie eine Spalte zum Ende des Datenrahmens sampeln, die die Anzahl der Beobachtungen in den Behältern enthalten so dass das Ergebnis:

Index  A B Count 
2016-01-01 6 12 2 
2016-01-02 1 1 1 

Antwort

4

können Sie verwenden Resampler.agg oder DataFrameGroupBy.agg:

df1 = df.resample('D').agg({'A':'sum', 'B':['sum', 'size']}) 
print (df1) 
      B  A 
      sum size sum 
Index     
2016-01-01 12 2 6 
2016-01-02 1 1 1 

df2 = df.groupby(level=0).agg({'A':'sum', 'B':['sum', 'size']}) 
print (df2) 
      B  A 
      sum size sum 
Index     
2016-01-01 12 2 6 
2016-01-02 1 1 1 

Wenn benötigen MultiIndex in Spalten entfernen:

df1 = df.resample('D').agg({'A':'sum', 'B':['sum', 'size']}) 
df1.columns = ['B','Count','A'] 
df1 = df1[['A','B','Count']] 
print (df1) 
      A B Count 
Index     
2016-01-01 6 12  2 
2016-01-02 1 1  1 

df2 = df.groupby(level=0).agg({'A':'sum', 'B':['sum', 'size']}) 
df2.columns = ['B','Count','A'] 
df2 = df2[['A','B','Count']] 
print (df2) 
      A B Count 
Index     
2016-01-01 6 12  2 
2016-01-02 1 1  1 
+0

Das ist, was ich tun wollte. Ich wusste nicht, dass du eine Liste in das agg() dict einspeisen kannst. –

Verwandte Themen