Pandas: Dataframe-Erstellung: dtypes mit einem Wörterbuch angeben

Erstellt am 18. Jan. 2015  ·  3Kommentare  ·  Quelle: pandas-dev/pandas

Entschuldigung, falls diese Funktion schon einmal vorgeschlagen wurde. Viele der IO-Funktionen (zB read_csv ) ermöglichen die einfache Angabe des Formats für jede Spalte mithilfe eines Wörterbuchs. Soweit ich das verstanden habe ist das nicht
möglich mit der regulären Datenrahmenkonstruktion, zB:

df = pd.DataFrame(data=data, columns=columns, dtypes={'colname1': str, 'colname2': np.int})

Noch besser wäre es, wenn man die dtypes für die Datenrahmenspalten mit einer ähnlichen Konstruktion ändern könnte, zB:

df.change_types({'colname1': str, 'colname2': np.int})

Ist so etwas schon geplant?

API Design Dtypes Duplicate Reshaping

Hilfreichster Kommentar

Dieser Weg funktioniert tatsächlich:
data_df = data_df.astype( dtype= {"wheel_number":"int64", "car_name":"object","minutes_spent":"float64"})

Alle 3 Kommentare

siehe #9133 und #4464 das ist gar nicht so schwer
willst du es mal versuchen?

Dieser Weg funktioniert tatsächlich:
data_df = data_df.astype( dtype= {"wheel_number":"int64", "car_name":"object","minutes_spent":"float64"})

Ein Unterschied zwischen read_csv( csvFile, dtype={..} ) und df.astpye(dtype={..} ) :
Im Fall von read_csv ist es in Ordnung, wenn das gelieferte dict mehr Spalten enthält, die nicht in der csv enthalten sind, werden sie elegant ignoriert. Im Fall von astype() wird ein Fehler ausgegeben, wenn nicht alle definierten Spalten in den Daten vorhanden sind.

Es sollte eher wie read_csv sein. Weil wir eingehende Diktate haben können, die einige Spalten haben und andere nicht. Im Moment ist dies der Workaround, den ich tun muss:

df = pd.DataFrame( incoming_data )
gtfs_dtypes = { ... } # my master dtypes dict, having all possible column names
gtfs_dtypes_specific = { x:gtfs_dtypes.get(x,'str') for x in df.columns.tolist() }
df = df.astype(dtype=gtfs_dtypes_specific)
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen