Im Geiste von this answer versuchte ich Folgendes, um eine DataFrame-Spalte mit Datumsangaben in eine Spalte von Sekunden seit der Epoche zu konvertieren.Python Pandas Reihe von Datumsangaben in Sekunden seit der Epoche
df['date'] = (df['date']+datetime.timedelta(hours=2)-datetime.datetime(1970,1,1))
df['date'].map(lambda td:td.total_seconds())
Der zweite Befehl verursacht den folgenden Fehler, den ich nicht verstehe. Irgendwelche Gedanken darüber, was hier vor sich geht? Ich habe Karte durch Anwendung ersetzt und das hat nichts geholfen.
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-99-7123e823f995> in <module>()
----> 1 df['date'].map(lambda td:td.total_seconds())
/Users/cpd/.virtualenvs/py27-ipython+pandas/lib/python2.7/site-packages/pandas-0.12.0_937_gb55c790-py2.7-macosx-10.8-x86_64.egg/pandas/core/series.pyc in map(self, arg, na_action)
1932 return self._constructor(new_values, index=self.index).__finalize__(self)
1933 else:
-> 1934 mapped = map_f(values, arg)
1935 return self._constructor(mapped, index=self.index).__finalize__(self)
1936
/Users/cpd/.virtualenvs/py27-ipython+pandas/lib/python2.7/site-packages/pandas-0.12.0_937_gb55c790-py2.7-macosx-10.8-x86_64.egg/pandas/lib.so in pandas.lib.map_infer (pandas/lib.c:43628)()
<ipython-input-99-7123e823f995> in <lambda>(td)
----> 1 df['date'].map(lambda td:td.total_seconds())
AttributeError: 'float' object has no attribute 'total_seconds'
Es scheint, dass die 'date'-Spalte möglicherweise kein datetime64 an erster Stelle ist? – Boud
Enthält die Spalte fehlende Werte? Fehlende Werte führen normalerweise dazu, dass Pandas-Reihen in Schwebezustand versetzt werden, was Verrücktheit verursacht, wenn Sie versuchen, sie als Datumsangaben zu interpretieren. – Abe
@Abe Tatsächlich hatten Sie Recht. Es stellt sich heraus, dass einige Daten in einigen der Datensätze fehlen. Nicht was ich erwartet hatte ... Ack. – Chris