web-dev-qa-db-fra.com

Python - Transforme tous les éléments d'un Dataframe en chaînes

J'ai suivi la procédure suivante: En Python, comment convertir tous les éléments d'une liste en éléments flottants? parce que chaque colonne de mon Dataframe est list, mais au lieu de floats, j'ai choisi de changer toutes les valeurs en strings.

df = [str(i) for i in df]

Mais cela a échoué.

Il a simplement effacé toutes les données sauf la première ligne de noms de colonnes.

Ensuite, essayer df = [str(i) for i in df.values] a eu pour résultat de transformer l’ensemble du Dataframe en une seule grande liste, mais cela a gâché les données trop pour pouvoir atteindre l’objectif de mon script qui consiste à exporter le Dataframe vers ma table Oracle.

Existe-t-il un moyen de convertir tous les éléments de mon Dataframe qui ne sont PAS des chaînes en chaînes?

11
theprowler

Vous pouvez utiliser la méthode applymap:

df = df.applymap(str)
15
Psidom

Vous pouvez utiliser ceci:

df = df.astype(str)

par curiosité, j'ai décidé de voir s'il y avait une différence d'efficacité entre la solution acceptée et la mienne.

Les résultats sont ci-dessous:

exemple df: df = pd.DataFrame ([liste (plage (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

Il semble que df.astype soit beaucoup plus rapide :)

22
Skirrebattie

Cela a fonctionné pour moi:

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