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.
3 Réponses :
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)
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
Vous pouvez utiliser pandas to_numeric - make assurez-vous d'ajouter errors = coerce
.
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()
@StevenWang - Vous êtes les bienvenus! Si ma réponse vous a été utile, n'oubliez pas de l'accepter . Merci.