2
votes

Comment remplacer les valeurs par des symboles ajoutés à la fin par NaN dans un dataframe Pandas

J'essaie de nettoyer mon ensemble de données pandas, mais je ne parviens pas à trouver un moyen de supprimer les valeurs étranges avec #, *, x ajoutés à la fin de la valeur. Je voudrais remplacer toutes ces valeurs par np.nan.

J'ai joint un lien ci-dessous expliquant à quoi ressemble mon ensemble de données.

https://imgur.com/gallery/5l5XhF1


0 commentaires

3 Réponses :


0
votes

Option 1: vous souhaitez remplacer les fichiers indésirables par les valeurs nettoyées

import pandas
import re

replace_char = ['#', '*']
for char in replace_char:
    df = df.applymap(lambda x: np.nan if re.search('.*' + char, str(x)) else x)

Option 2: vous souhaitez remplacer les fichiers indésirables par np.nan strong>

replace_dict = {
        '#': '',
        '*': ''
    }

for key in replace_dict.keys():
    df = df.applymap(lambda x: x.replace(key, replace_dict[key]) if type(x) is str else x)


1 commentaires

Merci beaucoup d'avoir répondu, je me demandais comment je pourrais remplacer le disque par Nan plutôt que de supprimer uniquement le symbole. Étant donné que ces valeurs sont anormalement élevées par rapport à la colonne



1
votes

Vous pouvez utiliser pandas to_numeric - make assurez-vous d'ajouter errors = coerce .


0 commentaires

1
votes

Utilisez set_index pour obtenir uniquement des colonnes numériques, puis appliquer car to_numeric travailler avec chaque colonne ( Series ) séparément pour remplacer les non numériques par NaN s par errors = 'coerce' code> paramètre:

non_num_cols = ['date']
df = df.set_index(non_num_cols).apply(pd.to_numeric, errors='coerce').reset_index()


1 commentaires

@StevenWang - Vous êtes les bienvenus! Si ma réponse vous a été utile, n'oubliez pas de l'accepter . Merci.