Skip to main content
 首页 » 编程设计

python之将字典映射到数据框中的部分字符串匹配

2025年05月04日33虾米姐

我有以下 df

 ID       Code 
ABCD      00FQ 
JKFA    8LK9|4F5H 
QWST    2RLA|R1T5&8LK9 

我正在尝试将字典(其中值为 List)映射到 Code 的各个元素。

字典看起来是这样的:

d={'00FQ':"['A','B']", '8LK9':"['X']", '4F5H':"['U','Z']", '2RLA':"['H','K']", 'R1T5':"['B','G']" }  

我想将此字典映射到 Code 列中的每个元素,以 | 分隔。

生成的 df 看起来像这样:

 ID       Code           Logic 
ABCD      00FQ          ['A','B'] 
JKFA    8LK9|4F5H       ['X'] | ['U','Z'] 
QWST    2RLA|R1T5&8LK9  ['H','K'] | ['B','G'] & ['X'] 

请您参考如下方法:

IIUC split + replace + join

s=df.Code.str.split('|',expand=True).replace(d).stack().groupby(level=0).agg('|'.join) 
s 
Out[205]:  
0              ['A','B'] 
1        ['X']|['U','Z'] 
2    ['H','K']|['B','G'] 
dtype: object 
df['Logic']=s 

更新

s=df.Code.str.split('|') 
df['Logic']=['|'.join(d.get(y)for y in x) for x in s] 
Out[229]: ["['A','B']", "['X']|['U','Z']", "['H','K']|['B','G']"] 

更新 replace 日期 2019-11-18(op 改题后)

df.Code.replace(d,regex=True) 
Out[376]:  
0                    ['A','B'] 
1              ['X']|['U','Z'] 
2    ['H','K']|['B','G']&['X'] 
Name: Code, dtype: object