1
votes

Supprimer les entiers et les caractères spéciaux de la colonne

Nouveau dans Python, souhaite supprimer les caractères spéciaux et les entiers des valeurs de colonne. Je veux rester avec seulement des caractères de chaîne dans la colonne. Pour ce cas, c'est la colonne C que je souhaite supprimer les caractères spéciaux tels que les barres obliques et les chiffres, voir le tableau

import pandas as pd 

data = {'A':['NW', 'NB', 'UK', 'CAN'],'B':['Tom', 'nick', 'krish', 'jack'], 'C':['Empty', 'Yes', 'Male female', 'Yes']} 
df = pd.DataFrame(data) 
print(df)

Maintenant, si une ligne n'a qu'un entier dans la colonne C, je devrais la supprimer, j'ai essayé ceci qui ne fonctionne pas bien

df['C'].map(lambda x: re.sub(r'\-,+', '', x))

SORTIE ATTENDUE

import pandas as pd 

data = {'A':['NW', 'NB', 'UK', 'CAN', 'der'],'B':['Tom', 'nick', 'krish', 'jack','mark'], 'C':['|20|Empty,', 'Yes| -1', 'Male|-1|2-female|0', 'Yes| 1', 79]} 
df = pd.DataFrame(data) 
print(df)


0 commentaires

4 Réponses :


1
votes

Utilisez str.replace

     A      B            C
0   NW    Tom        Empty
1   NB   nick          Yes
2   UK  krish  Male female
3  CAN   jack          Yes
4  der   mark          NaN

Sortie:

data = {'A':['NW', 'NB', 'UK', 'CAN', 'der'],'B':['Tom', 'nick', 'krish', 'jack','mark'], 'C':['|20|Empty,', 'Yes| -1', 'Male|-1|2-female|0', 'Yes| 1', 79]} 
df = pd.DataFrame(data)
df["C"] = df["C"].str.replace(r"[^a-zA-Z]+", " ", regex=True).str.strip() 
print(df)


0 commentaires

1
votes

Essayez ceci avec .apply

>>> df['C'].apply(lambda x: re.sub(r'[^a-zA-Z ]+', ' ', str(x)))
0         Empty
1          Yes 
2    Male female
3          Yes 
4              
Name: C, dtype: object


0 commentaires

2
votes

0
votes

Le code ci-dessous devrait fonctionner, mais ce n'est peut-être pas la manière optimale de le faire.

df["C"].str.replace("[0-9]","").str.replace("|"," ").str.replace(",","").str.replace("-","").dropna()


0 commentaires