2016-03-24 5 views
1

Ich habe einen Pandas Datenrahmen df mit folgendem FormatPython Pandas groupby Grundstück mit sortierten Datum als Xtick

date   value  team 
12/8/2015  1.2   'A' 
12/8/2015  1.3   'A' 
12/7/2015  1.2   'A' 
12/6/2015  1.3   'B' 
12/6/2015  1.1   'B' 
12/7/2015  1.3   'B' 
............................... 

Was ich will, ist eine Figur mit zwei Kurven, die zwei Gruppen, mit Datum als x-Wert, Durchschnittswert des entsprechenden Datums als y-Wert. Was stört mich ist das Datumsformat nicht korrekt scheint, als Python

beschwert „konnte nicht 2015.12.08 konvertieren ... in numerische“

for label, group in df.groupby('team']): 
     group.plot(x=group['date'], y=group['date'].mean(),label=label) 

Antwort

2

Als erstes müssen Sie Ihr Datum zu einem Zeitstempel umwandeln .

df['date'] = pd.to_datetime(df.date) 

Dann können Sie Gruppe und unstack Ihre gewünschten Daten zu erhalten:

>>> df.groupby(['date', 'team']).sum().unstack('team') 
      value  
team   'A' 'B' 
date     
2015-12-06 NaN 2.4 
2015-12-07 1.2 1.3 
2015-12-08 2.5 NaN 

.plot() hinzufügen und Sie sollten Ihre gewünschte Ergebnis erhalten.

+0

Eine Follow-up-Frage, nachdem ich Plot-Funktion verwenden, wie die Legende nur zeigt 'Team' anstelle von 'Datum' und 'Team' – Jin

+0

macht nichts, Antwort ist hier http://StackOverflow.com/Questions/ 13886019/rekonstruktionsfigur-legend-in-pandas – Jin

+0

Ich schlug vor, 'df2 = df.groupby (['datum', 'team']). Sum() .entstap ('team')', 'df2. columns = df2.columns.droplevel() ' – Alexander