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?
Vous pouvez utiliser la méthode applymap
:
df = df.applymap(str)
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 :)
Cela a fonctionné pour moi:
dt.applymap(lambda x: x[0] if type(x) is list else None)