如何根据熊猫中的字典映射包含多个字符串的列

时间:2019-12-06 04:40:58

标签: python pandas

我有一个数据框,其中一列包含用逗号分隔的字符串。我想根据字典映射列。

例如:

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

实现此目标的最佳方法是什么?谢谢。

2 个答案:

答案 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