2017-09-15 1 views
2

J'ai une base de données avec des adresses e-mail. Je dois remplacer chaque fin d'adresse email par un '.mn'. Ce que je veux dire par la fin est '.org', '.com', etc.Comment remplacer une partie de l'adresse e-mail avec une autre chaîne dans les pandas?

Ex. [email protected] becomes [email protected]

Je ne sais pas ce que je fais mal.

C'est ce que j'ai jusqu'à présent, mais cela ne remplace pas ou me donner un message d'erreur:

email['ADDR'] = email['ADDR'].str.replace(r'[.]{2,}', '.mn') 

Merci à l'avance.

Répondre

4

Cela devrait faire:

email['ADDR'] = email['ADDR'].str.replace('.{3}$', 'mn') 

Si vous avez besoin de gérer des domaines de longueur variable (.edu, .com1, etc.), vous pouvez utiliser:

email 

      ADDR 
0 [email protected] 
1 [email protected] 
2 [email protected] 

email['ADDR'].str.replace('\..{2,}$', '.mn') 

0 [email protected] 
1  [email protected] 
2  [email protected] 
Name: ADDR, dtype: object 
+1

Il suffit d'ouvrir la question et il y a votre belle et succincte réponse ~ – Wen

+1

Hey merci ce travailliez – RustyShackleford

2

Une autre méthode traitera les fins de niveau supérieur de longueur variable est d'utiliser str.rsplit:

In[72]: 
df = pd.DataFrame({'email':['[email protected]','[email protected]','[email protected]']}) 
df 

Out[72]: 
       email 
0 [email protected] 
1  [email protected] 
2 [email protected] 

In[73]: 
df['email'] = df['email'].str.rsplit('.').str[0] +'.mn' 
df 

Out[73]: 
      email 
0 [email protected] 
1 [email protected] 
2 [email protected] 

Ce trouvera le dernier point de fuite, prend le côté gauche et ajouter le nouveau suffixe souhaité

+1

Ah, belle et simple. –

+0

Hey cela a fonctionné aussi bien! Merci beaucoup – RustyShackleford