2016-10-10 4 views
1

So habe ich ein Pandas Datenframe namens 'df' und ich möchte die Sekunden entfernen und nur den Index im Format YYYY-MM-DD HH: MM haben. Aber auch die Minuten werden gruppiert und der Durchschnitt für diese Minute angezeigt.Gruppenindex nach Minuten und berechnen Durchschnitt

Deshalb möchte ich diesen Datenrahmen

     value 
2015-05-03 00:00:00  61.0 
2015-05-03 00:00:10  60.0 
2015-05-03 00:00:25  60.0 
2015-05-03 00:00:30  61.0 
2015-05-03 00:00:45  61.0 
2015-05-03 00:01:00  61.0 
2015-05-03 00:01:10  60.0 
2015-05-03 00:01:25  60.0 
2015-05-03 00:01:30  61.0 
2015-05-03 00:01:45  61.0 
2015-05-03 00:02:00  61.0 
2015-05-03 00:02:10  60.0 
2015-05-03 00:02:25  60.0 
2015-05-03 00:02:40  60.0 
2015-05-03 00:02:55  60.0 
2015-05-03 00:03:00  59.0 
2015-05-03 00:03:15  59.0 
2015-05-03 00:03:20  59.0 
2015-05-03 00:03:35  59.0 
2015-05-03 00:03:40  60.0 

in diesem Datenrahmen

     value 
2015-05-03 00:00  60.6 
2015-05-03 00:01  60.6 
2015-05-03 00:02  60.2 
2015-05-03 00:03  59.2 

ive Code versucht drehen wie

df['value'].resample('1Min').mean() 

oder

df.index.resample('1Min').mean() 

aber das scheint nicht zu funktionieren. Irgendwelche Ideen?

+0

Für mich ist es funktioniert perfekt. Sie erhalten einen Fehler? – jezrael

+0

df.index.resample ('1Min'). Mean() gibt den Fehler an AttributeError: 'DatetimeIndex' -Objekt hat kein Attribut 'resample' und df ['value']. ​​Ressample ('1Min'). Mean() nicht Geben Sie einen Fehler, aber nicht das gewünschte Ergebnis, nichts ändert sich nicht ich bekomme die Durchschnitte und die Sekunden sind immer noch –

Antwort

1

Sie müssen zuerst convert Index DatetimeIndex:

df.index = pd.DatetimeIndex(df.index) 
#another solution 
#df.index = pd.to_datetime(df.index) 

print (df['value'].resample('1Min').mean()) 
#another same solution 
#print (df.resample('1Min')['value'].mean()) 
2015-05-03 00:00:00 60.6 
2015-05-03 00:01:00 60.6 
2015-05-03 00:02:00 60.2 
2015-05-03 00:03:00 59.2 
Freq: T, Name: value, dtype: float64 

Eine andere Lösung mit Werten von Sekunden in Index 0 von astype seting:

print (df.groupby([df.index.values.astype('<M8[m]')])['value'].mean()) 
2015-05-03 00:00:00 60.6 
2015-05-03 00:01:00 60.6 
2015-05-03 00:02:00 60.2 
2015-05-03 00:03:00 59.2 
Name: value, dtype: float64 
+0

Ich habe bereits df.index = df.index.to_datetime() in meinem Code, wird das nicht zu einem Datetimeindex konvertieren ? –

+0

Versuchen Sie 'df.index = pd.to_datetime (df.index)'? – jezrael

+0

ok also der code, den ich wirklich wollte, war df = df ['value']. ​​Resample ('1Min'). Mean(), danke, wird deine antwort in 4 minuten zeit annehmen! –

Verwandte Themen