2016-11-30 3 views
0

Angenommen, ich habe einen Python Pandas Datenrahmen mit 10 Zeilen und 16 Spalten. Jede Zeile steht für ein Produkt. Die erste Spalte ist Produkt-ID. Weitere 15 Spalten sind Verkaufspreise fürBerechnen Durchschnitt für jedes Quartal gegeben Monat Spalten

2010/01,2010/02,2010/03,2010/05,2010/06,2010/07,2010/08,2010/10,2010/11,2010/12,2011/01,2011/02,2011/03,2011/04,2011/05.

(Der Spaltenname ist in Strings, nicht in dem Datumsformat) Jetzt habe ich den mittleren Verkaufspreis pro Quartal (1Q2010,2Q2010, ..., 2Q2011) berechnet werden soll, ich weiß nicht, wie zu tun damit. (Beachten Sie, dass für 2010/04, 2010/09 und 2011/06 ein Monat fehlt.)

Die obige Beschreibung ist nur ein Beispiel. Weil dieser Datensatz ziemlich klein ist. Es ist möglich, manuell zu loopen. Der wirkliche Datensatz, an dem ich arbeite, ist jedoch 10730 * 202. Daher kann ich nicht manuell überprüfen, welcher Monat tatsächlich fehlt oder die Quartale manuell abbilden. Ich frage mich, wie effizient ich mich hier bewerben kann.

Danke für die Hilfe!

+0

Sie können Zeichenfolge in Datetime konvertieren und eine Groupby Abfrage anwenden. Ich habe es nicht ausprobiert. Es ist nur ein Vorschlag. – user1211

Antwort

1

Dies sollte helfen.

import pandas as pd 
import numpy as np 
rng = pd.DataFrame({'date': pd.date_range('1/1/2011', periods=72, freq='M'), 'value': np.arange(72)}) 
df = rng.groupby([rng.date.dt.quarter, rng.date.dt.year]) .mean() 
df.index.names = ['quarter', 'year'] 
df.columns = ['mean'] 
print df 


      mean 
quarter year  
1  2011  1 
     2012 13 
     2013 25 
     2014 37 
     2015 49 
     2016 61 
2  2011  4 
     2012 16 
     2013 28 
     2014 40 
     2015 52 
     2016 64 
3  2011  7 
     2012 19 
     2013 31 
     2014 43 
     2015 55 
     2016 67 
4  2011 10 
     2012 22 
     2013 34 
     2014 46 
     2015 58 
     2016 70 
Verwandte Themen