Ich muss eine große Menge von CSV-Dateien verarbeiten, wobei der Zeitstempel immer eine Zeichenfolge ist, die den Unix-Zeitstempel in Millisekunden darstellt. Ich konnte noch keine Methode finden, um diese Spalten effizient zu modifizieren.Pandas konvertieren Zeile mit Unix-Zeitstempel (in Millisekunden) bis Datetime
Das ist, was ich gefunden habe, aber das dupliziert natürlich nur die Spalte und ich muss es irgendwie zum ursprünglichen Datensatz zurückstellen. Ich bin mir sicher, dass es bei der Erstellung der DataFrame
getan werden kann?
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO
import pandas as pd
data = 'RUN,UNIXTIME,VALUE\n1,1447160702320,10\n2,1447160702364,20\n3,1447160722364,42'
df = pd.read_csv(StringIO(data))
convert = lambda x: datetime.datetime.fromtimestamp(x/1e3)
converted_df = df['UNIXTIME'].apply(convert)
Dies wird die Spalte ‚Unix-Zeit‘ wählen und ändern von
0 1447160702320
1 1447160702364
2 1447160722364
Name: UNIXTIME, dtype: int64
in diesem
0 2015-11-10 14:05:02.320
1 2015-11-10 14:05:02.364
2 2015-11-10 14:05:22.364
Name: UNIXTIME, dtype: datetime64[ns]
Allerdings würde Ich mag so etwas wie pd.apply()
verwenden, um den gesamten Datensatz zu erhalten zurückgegeben mit der konvertierten Spalte oder wie ich bereits schrieb, erstellen Sie einfach Datumswerte beim Generieren des DataFrame von CSV.
Ah, ich völlig verfehlt, dass 'unit' Parameter, danke, das ist ein nice one! Ich werde eine Pull-Anfrage machen, um das auch in '.read_csv' über parse_dates einzubinden. – tamasgal
Dies kann aufgrund von Zeitzonenproblemen zu einer falschen Uhrzeit führen. –
@PengjuZhao die OP-Frage erwähnt keine Zeitzone, für die Teudimundo Antwort löst das – EdChum