Datetime-Objekte mit pandas meine Funktion
Ich bin neu in der Programmierung, so dass ich entschuldige mich im Voraus, wenn diese Frage keine sens.
Ich habe bemerkt, dass wenn ich versuche zu berechnen, den Mittelwert eines pandas-Daten-frame mit einem date-time-Objekt wie folgt formatiert: datetime.datetime(2014, 7, 10), es kann nicht berechnen, den Mittelwert von es aber es scheint in der Lage zu berechnen, der minimale und maximale Wert, die gleiche Daten-frame mit einem problem.
d={'one' : Series([1, 2, 3], index=['a', 'b', 'c']), 'two' :Series([datetime.datetime(2014, 7, 9) , datetime.datetime(2014, 7, 10) , datetime.datetime(2014, 7, 11) ], index=['a', 'b', 'c'])}
df=pd.DataFrame(d)
df
Out[18]:
one two
a 1 2014-07-09
b 2 2014-07-10
c 3 2014-07-11
df.min()
Out[19]:
one 1
two 2014-07-09
dtype: object
df.mean()
Out[20]:
one 2
dtype: float64
Ich habe bemerkt, dass der min und der max-Funktion konvertiert alle Spalten an Objekte, wo, wie die meine, die Funktion gibt nur schwimmt.
Könnte jemand mir erklären, warum die Mittelwert-Funktion kann nur mit floats?
Gibt es eine andere Möglichkeit, die ich, um die Mittelwerte der Daten-frame mit einem date-time-Objekt?
Ich kann es umgehen, indem Epoche Zeit (als ganze Zahl), aber es wäre sehr praktisch, wenn es einen direkten Weg. Ich verwende Python 2.7
Ich bin dankbar für alle Hinweise.
- Ich glaube nicht, Sie können (ich könnte falsch sein) zum Beispiel
np.mean(df['two'])
wirft eineTypeError
umwandeln in int-Werte ist wahrscheinlich die beste Wahl, auch, wenn Sie denken, Sie können nicht durchführennp.sum
entweder
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die datetime.timedelta
Vereinfachen Alex ' Antwort (ich würde Hinzugefügt haben, können Sie diese als Kommentar, aber ich habe nicht genügend Ruf):
Sieht aus wie:
Dann berechnet den Mittelwert der Spalte "zwei" durch:
So, subtrahieren Sie die min der timeseries, berechnet den Mittelwert (oder median) der resultierenden timedeltas, und fügen Sie wieder die min.
Dieses Problem ist sozusagen gelöst, als der pandas=0.25. Jedoch bedeuten, können nur die derzeit angewendet werden, um ein datetime-Serie und kein datetime-Serie in ein DataFrame.
Anwenden .Mittelwert() um einen DataFrame mit einem datetime-Serie liefert das gleiche Ergebnis wie in der ursprünglichen Frage.