我有一个数据框,其中一列包含用逗号分隔的字符串。我想根据字典映射列。
例如:
dfm = pd.DataFrame({'Idx': np.arange(4), 'Names': ['John,Mary', 'Mike', 'Mike,Joe,Mary', 'John']})
mask = {'John':'1', 'Mary':'2','Joe':'3','Mike':'4'}
所需的输出:
Idx Names
0 0 1,2
1 1 4
2 2 4,3,2
3 3 1
实现此目标的最佳方法是什么?谢谢。
答案 0 :(得分:1)
您可以尝试以下方法:
>>> dfm.Names.apply(lambda x: ','.join([mask[i] for i in x.split(',')]))
0 1,2
1 4
2 4,3,2
3 1
Name: Names, dtype: object
答案 1 :(得分:0)
可以将函数传递给在这种情况下可以使用的.str.replace
函数
dfm.Names.str.replace('\w+(?=,|$)', lambda m: mask.get(m.group(0)))
使用此方法,可以这样创建一个新的数据框:
pd.DataFrame({
'Idx': dfm.Idx,
'Names': dfm.Names.str.replace('\w+(?=,|$)', lambda m: mask.get(m.group(0)))
})
# outputs:
Idx Names
0 0 1,2
1 1 4
2 2 4,3,2
3 3 1