import pandas as pd
df= pd.DataFrame({'Data':['Hey this is 123456 Jonny B Good',
'This is Jonny B Good at 511-233-1137',
'Wow that is Alice N Wonderland A999b',
'Yes hi: Mick E Mouse 1A25629Q88 or ',
'Bye Mick E Mouse A13B ok was seen on '],
'E_ID': ['E11','E11', 'E22', 'E33', 'E33'],
'N_ID' : ['111', '112', '211', '311', '312'],
'Name' : ['JONNY B GOOD', 'JONNY B GOOD',
'ALICE N WONDERLAND',
'MICK E MOUSE', 'MICK E MOUSE'],
})
df
Data E_ID N_ID Name
0 Hey this is 123456 Jonny B Good E11 111 JONNY B GOOD
1 This is Jonny B Good at 511-233-1137 E11 112 JONNY B GOOD
2 Wow that is Alice N Wonderland A999b E22 211 ALICE N WONDERLAND
3 Yes hi: Mick E Mouse 1A25629Q88 or E33 311 MICK E MOUSE
4 Bye Mick E Mouse A13B ok was seen on E33 312 MICK E MOUSE
我有一个样品df
如上所示。我还有样本词典d
如下所示
d = {'E11': ['Jonny',
'B',
'Good',
'Jonny',
'B',
'Good',
'123456',
'511-233-1137'],
'E22': ['Alice',
'N',
'Wonderland',
'A999b'],
'E33': ['Mick',
'E' ,
'Mouse',
'Mick',
'E' ,
'Mouse',
'1A25629Q88',
'A13B',]}
我想使用来自的值d
e.g. Jonny
更改相应的值Data
。所以例如Jonny
in row 0
会变成@@@
.
为此,我查看了使用字典重新映射 pandas 列中的值 https://stackoverflow.com/questions/20250771/remap-values-in-pandas-column-with-a-dict and 如何用pandas中的字典键替换列值 https://stackoverflow.com/questions/49008179/how-to-replace-column-values-with-dictionary-keys-in-pandas但他们并没有多大帮助。我想我需要使用这样的东西
df['New'] = df['Data'].str.replace(d[value], '@@@')
我希望我的输出看起来像这样
Data E_ID N_ID Name New
0 Hey this is @@@ @@@ @@@ @@@
1 This is @@@ @@@ @@@ at @@@
2 Wow that is @@@ @@@ @@@ @@@
3 Yes hi: @@@ @@@ @@@ @@@ or
4 Bye @@@ @@@ @@@ @@@ ok was seen on
我需要做什么才能得到这个输出?