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)
4 Réponses :
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)
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
Vous pouvez utiliser str. remplace + str. strip et enfin dropna a>: Sortie A B C
0 NW Tom Empty
1 NB nick Yes
2 UK krish Male female
3 CAN jack Yes
df['C'] = df.C.str.replace('(?i)[^a-z]', ' ').str.replace('\s+', ' ').str.strip()
print(df.dropna())
df ['C'] = df.C.str.replace ('[^ az]', '', case = False) .str.replace ('\ s +', '') .str.strip ( ) ;)
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()