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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage