2 votes

Python : Faire correspondre une chaîne de caractères et la remplacer en place

J'ai deux cadres de données (DF1 et DF2) avec plusieurs colonnes d'informations textuelles. J'ai besoin de faire correspondre et de mettre à jour une colonne dans DF1.

DF1:
Code Name
A    A: Andrew
B    B: Bill
C    C: Chuck

DF2:
Number Codes
1      A
2      B;C
3      A;C

Le résultat que je souhaite obtenir est de transformer DF2 comme suit :

DF2:
Number Codes
1      A: Andrew
2      B: Bill;C: Chuck
3      A: Andrew;C: Chuck

Jusqu'à présent, j'ai essayé d'utiliser :

df2['Codes'] = df2['Codes'].replace(to_replace="A", value="A: Andrew", regex=True)

Mais cela n'est pas pratique pour les grands ensembles de données.

Dois-je utiliser la même fonction df.replace et faire une boucle pour trouver chaque code et le remplacer ? Ou existe-t-il d'autres moyens de mieux faire ?

Une option que j'essaie d'apprendre est l'utilisation de sub() avec regex, mais je suis novice en matière de regex et j'en apprends les bases.

2voto

Suraj S Points 356

Tu devrais juste essayer de split Colonne puis appliquer dict con zip y replace

di=dict(zip(df1.Name.str.split(":").str[0],df1.Name))

df2["Codes"]=df2["Codes"].replace(di, regex=True)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X