Ich habe das folgende Verfahren befolgt: Wie konvertiere ich in Python alle Elemente in einer Liste in Floats? weil jede Spalte meines Datenrahmens list
ist, aber anstelle von floats
habe ich beschlossen, alle Werte in strings
zu ändern.
df = [str(i) for i in df]
Aber das ist fehlgeschlagen.
Es löschte einfach alle Daten mit Ausnahme der ersten Zeile der Spaltennamen.
Der Versuch, df = [str(i) for i in df.values]
zu verwenden, führte dazu, dass der gesamte Dataframe in eine große Liste geändert wurde. Dadurch werden die Daten jedoch zu stark durcheinander gebracht, um das Ziel meines Skripts zu erreichen, den Dataframe in meine Oracle-Tabelle zu exportieren.
Gibt es eine Möglichkeit, alle Elemente in meinem Datenrahmen, die KEINE Zeichenfolgen sind, in Zeichenfolgen zu konvertieren?
Sie können die applymap
-Methode verwenden:
df = df.applymap(str)
Sie können dies verwenden:
df = df.astype(str)
aus Neugier entschied ich mich zu sehen, ob es einen Effizienzunterschied zwischen der akzeptierten und meiner Lösung gibt.
Die Ergebnisse sind unten:
beispiel df: df = pd.DataFrame ([Liste (Bereich (1000))], Index = [0])
test df.astype
:
%timeit df.astype(str)
>> 100 loops, best of 3: 2.18 ms per loop
test df.applymap
:
%timeit df.applymap(str)
1 loops, best of 3: 245 ms per loop
Es scheint, df.astype
ist viel schneller :)
Das hat für mich funktioniert:
dt.applymap(lambda x: x[0] if type(x) is list else None)