首页 > 解决方案 > 替换字典值中的值

问题描述

1.我有一个数据框输入:

emp data
pp  ab
qq  bc
rr  cs
ss  dp

字典:

df_r.to_dict('dict')

2.我有另一个名称具有字符串值的数据框:

ID name
1  ['u']['s']
2  ['v']['ab']
3  ['w']['dp']
4  ['x']['t']

字典:

df.to_dict('dict')

预期结果:我想根据数据的 emp 值替换 name 的值

ID name
1  ['u']['s']
2  ['v']['pp']
3  ['w']['ss']
4  ['x']['t']

代码:我试过

mapper = dict(df_r[["data", "emp"]].values)
mapper
df.name = df.name.replace(mapper).values
df

问题:不做任何值的替换。数据框不受影响。

标签: pythondataframedictionarynested

解决方案


转换第一个 Dataframe,dict然后使用它来更新第二个 Dataframe。脚步:

数据框:

import pandas as pd

df1 = pd.DataFrame([['pp', 'ab'], 
                    ['qq','bc'],
                    ['rr', 'cs'],
                    ['ss', 'dp']],
                   columns=['emp', 'data'])

df2 = pd.DataFrame([['u', 's'],
                   ['v', 'ab'],
                   ['w', 'dp'],
                   ['x', 't']],
                   columns=['ID', 'name'])

从 df1 获取字典,其中data as keysemp as values

将数据作为索引Dataframe然后转换为dict

df1_dict = df1.set_index('data').to_dict()['emp']

替换df2的名称列中的值

df2['name'] = df2['name'].replace(df1_dict)

输出:

  ID name
0  u    s
1  v   pp
2  w   ss
3  x    t

推荐阅读