python - 替换字典值中的值
问题描述
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
问题:不做任何值的替换。数据框不受影响。
解决方案
转换第一个 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 keys
,emp 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
推荐阅读
- go - 记录任何 go 例程的堆栈跟踪
- elasticsearch - elasticsearch 可以在 x86-64 linux 架构上使用 NUMA 吗?
- swift - SwiftUI 中警报中的延迟操作
- python - Flask:如何删除 request.method == POST
- android - 颤振音频服务??android.app.RemoteServiceException: Context.startForegroundService() 然后没有调用 Service.startForeground()
- r-markdown - 当我已经多次引用它时,为什么我的 rmarkdown/papaja 不抑制以下作者姓名(因为它需要 APA 样式)?
- android - 数据绑定对象设置内容视图,但实际上为空
- arrays - 快速过滤数组中给定的特定元素
- python - Python if 带括号的条件
- javascript - d3工具提示和画笔不能一起工作