J'ai un fichier de données pandas df avec des identifiants comme chaînes: j'essaie de créer les colonnes new_claim et new_description

example df

Le plus proche SO que j'ai trouvé était efficacement remplacer une partie de la valeur d'une colonne par la valeur d'une autre colonne dans les pandas en utilisant regex? mais cela utilise une partie fractionnée, et depuis que la description change, je n'ai pas pu généraliser.

Je peux en courir un

date_reg = re.compile(r'\b'+df['old_id'][1]+r'\b')

df['new_claim'] = df['claim'].replace(to_replace=date_reg, value=df['external_id'], inplace=False)

Mais si j'ai

date_reg = re.compile(r'\b'+df['claim']+r'\b')

Ensuite, je reçois "TypeError: les objets 'Series' sont mutables, donc ils ne peuvent pas être hachés"

Une autre approche que j'ai adoptée

df['new_claim'] = df['claim']

for i in range(5):
    old_id = df['old_id'][i]
    new_id = df['external_id'][i]

    df['new_claim'][i] = df['claim'][i].replace(to_replace=old_id,value=new_id)

Ce qui donne une TypeError: replace () ne prend aucun argument de mot clé

2
Matt S 22 févr. 2019 à 18:12

1 réponse

Meilleure réponse