13 votes

Comment supprimer les virgules de TOUTES les colonnes dans pandas en une seule fois ?

J'ai une base de données dont toutes les colonnes sont censées être des nombres. Lors de la lecture, certaines d'entre elles ont été lues avec des virgules. Je sais qu'une seule colonne peut être corrigée par

df['x']=df['x'].str.replace(',','')

Cependant, cela ne fonctionne que pour les objets de la série et non pour l'ensemble du cadre de données. Existe-t-il un moyen élégant de l'appliquer à l'ensemble du cadre de données, puisque chaque entrée du cadre de données doit être un nombre.

P.S : Pour m'assurer que je peux str.replace, j'ai d'abord converti le cadre de données en str en utilisant

df.astype('str')

Si je comprends bien, je vais devoir les convertir tous en chiffres une fois la virgule supprimée.

22voto

jezrael Points 290608

Les colonnes numériques n'ont pas de , Il n'est donc pas nécessaire de les convertir en chaînes de caractères. DataFrame.replace con regex=True pour le remplacement des sous-chaînes :

df = df.replace(',','', regex=True)

Ou bien :

df.replace(',','', regex=True, inplace=True)

Et enfin convertir les colonnes strings en numérique, merci @anki_91 :

c = df.select_dtypes(object).columns
df[c] = df[c].apply(pd.to_numeric,errors='coerce')

2voto

Azuuu Points 536

C'est très simple :

df = df.apply(lambda x: x.str.replace(',', ''))

J'espère que cela vous aidera !

-4voto

Rakesh Babu Points 21

Si vous souhaitez manipuler une seule colonne :

df.column_name = df.column_name.apply(lambda x : x.replace(',',''))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X