【发布时间】:2020-03-08 02:21:36
【问题描述】:
这和我昨天发的一个帖子很相似。(Replacing a pandas substring with value from a column/Series),但难度稍大一些。对于字段,名称,我想将括号内的子字符串替换为它们所代表的字段的名称
例如在第 1 行中:name 保存值 'name1 (name3) 我想用名为 name3 的字段中的值替换子字符串 '(name3)'。 所以名字现在变成了'name1 Simon'
data = {'ID': [1, 2, 3, 4], 'name': ['name1 (name3)', 'name2 (name2)', 'name3', 'name4 (name2) (name3)'],
'name2':['Jane','Abbie','Luke','Peter'],
'name3': ['Simon','Peter','Annie','Robinson']}
df = pd.DataFrame(data)
import re
df['new_name'] = [re.sub(r'\(\w+\)', r, s) for r, s in zip(df.name2, df.name)]
预期结果:
ID name name2 name3
0 1 name1 Simon Jane Simon
1 2 name2 Abbie Abbie Peter
2 3 name3 Luke Annie
3 4 name4 Peter Robinson Peter Robinson
实际结果:
ID name name2 name3
0 1 name1 Jane Jane Simon
1 2 name2 Abbie Abbie Peter
2 3 name3 Luke Annie
3 4 name4 Peter Peter Peter Robinson
【问题讨论】: