dask dataframe Wie konvertiert man eine Spalte nach to_datetime
Ich versuche, eine Spalte meines Datenrahmens in datetime zu konvertieren. Im Anschluss an die Diskussion hierhttps: //github.com/dask/dask/issues/86 Ich habe den folgenden Code ausprobiert:
import dask.dataframe as dd
df['time'].map_partitions(pd.to_datetime, columns='time').compute()
Aber ich erhalte die folgende Fehlermeldung
ValueError: Metadata inference failed, please provide `meta` keyword
Was genau soll ich unter Meta setzen? soll ich ein wörterbuch ALLER spalten in df schreiben oder nur der spalte 'time'? und welchen Typ soll ich setzen? Ich habe dtype und datetime64 ausprobiert, aber bisher funktioniert keines davon.
Danke und ich bedanke mich für Ihre Anleitung,
Aktualisiere
Ich werde hier die neuen Fehlermeldungen einfügen:
1) Verwenden von Timestamp
df['trd_exctn_dt'].map_partitions(pd.Timestamp).compute()
TypeError: Cannot convert input to Timestamp
2) Verwenden von datetime und meta
meta = ('time', pd.Timestamp)
df['time'].map_partitions(pd.to_datetime,meta=meta).compute()
TypeError: to_datetime() got an unexpected keyword argument 'meta'
3) Nur mit Datum und Uhrzeit: bleibt bei 2% stecken
In [14]: df['trd_exctn_dt'].map_partitions(pd.to_datetime).compute()
[ ] | 2% Completed | 2min 20.3s
Auch möchte ich in der Lage sein, das Format im Datum anzugeben, wie ich es in Pandas tun würde:
pd.to_datetime(df['time'], format = '%m%d%Y'
Update 2
Nach der Aktualisierung auf Dask 0.11 habe ich keine Probleme mehr mit dem Meta-Schlüsselwort. Trotzdem kann ich mit einem 2-GB-Datenframe nicht mehr als 2% erreichen.
df['trd_exctn_dt'].map_partitions(pd.to_datetime, meta=meta).compute()
[ ] | 2% Completed | 30min 45.7s
Update 3
arbeitete besser so:
def parse_dates(df):
return pd.to_datetime(df['time'], format = '%m/%d/%Y')
df.map_partitions(parse_dates, meta=meta)
Ich bin mir nicht sicher, ob es der richtige Ansatz ist oder nicht