wake-up-neo.net

Python - Verwandeln Sie alle Elemente in einem Datenrahmen in Zeichenfolgen

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?

11
theprowler

Sie können die applymap-Methode verwenden:

df = df.applymap(str)
15
Psidom

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 :)

22
Skirrebattie

Das hat für mich funktioniert:

dt.applymap(lambda x: x[0] if type(x) is list else None)
0
Sarbari Roy