将值映射到pandas中列表中的每个项

2024-10-01 17:40:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas dataframe列,其名称列表如下:

Names
Roger Williams, Anne Graham
Joe Smoe, Elliot Ezekiel
Todd Roger 

以及一个带有用户名的字典:

map = {Roger Williams: 1234, Anne Graham: 4892, Joe Smoe: 898, Elliot Ezekiel: 8458, Todd Roger: 856}

我需要使用pandas.map函数将列表中的每个名称与用户的用户名进行映射,如下所示:

^{pr2}$

有人能帮我完成这个任务吗?我真的很难受。谢谢!在


Tags: 名称mapdataframepandas列表用户名joegraham
3条回答

利用pd.Series和{}

df.replace(pd.Series(m).astype(str), regex=True)

        Names
0  1234, 4892
1   898, 8458
2         856

设置

^{pr2}$
In [124]: mapping
Out[124]:
{'Anne Graham': 4892,
 'Elliot Ezekiel': 8458,
 'Joe Smoe': 898,
 'Roger Williams': 1234,
 'Todd Roger': 856}

In [125]: df
Out[125]:
                         Names
0  Roger Williams, Anne Graham
1     Joe Smoe, Elliot Ezekiel
2                   Todd Roger

In [126]: df.replace(mapping.keys(), list(map(str, mapping.values())), regex=True)
Out[126]:
        Names
0  1234, 4892
1   898, 8458
2         856

如果有字符串列表:

^{pr2}$
def get_values(g):
    return ", ".join([map[x] for x in g])

df['Names'] = df['Names'].map(get_values)

0    1234, 4892
1     898, 8458
2           856
Name: Names, dtype: object

相关问题 更多 >

    热门问题