python - 如何根据另一个数据框中的查找表替换数据框中的值
问题描述
我试图弄清楚如何用查找表中的描述替换我的数据集中的占位符值。
import pandas as pd
#Survey Data
df=pd.DataFrame({
'age':[653,653,654,653,653],
'cty':[1056,1056,1158,1158,1203],
'eth':[545,545,530,530,545]
})
age cty eth
0 653 1056 NaN
1 653 1056 545
2 654 NaN 530
3 653 1158 530
4 653 1203 545
#Lookup table
lookup=pd.DataFrame({'category':['age', 'age', 'cty','cty', 'cty','eth','eth'],
'value':[653,654,1056,1158,1203,545,530],
'description':['30 to 39','40 to 49','Belgium','Taiwan','Czech Republic',
'White','Other']})
category value description
0 age 653 30 to 39
1 age 654 40 to 49
2 cty 1056 Belgium
3 cty 1158 Taiwan
4 cty 1203 Czech Republic
5 eth 545 White
6 eth 530 Other
因此,我的数据集中的每一列都与查找表中的一个类别相匹配。我想逐列,匹配类别,然后是值,用每个值的适当描述替换值。所以,它看起来像这样:
age cty eth
0 30 to 39 Belgium NaN
1 30 to 39 Belgium White
2 40 to 49 NaN Other
3 30 to 39 Taiwan Other
4 30 to 39 Czech Republic White
目前,我正在为每一列使用字典构建解决方案并对其进行映射,但这看起来很笨拙,我必须为每个类别创建一个单独的字典。当然,我应该能够查找类别,然后查找替换值的值?
解决方案
使用 pandas 的 replace方法:它将在数据框中搜索键并将找到的键替换为关联的值。您的数据框缺少一些 NaN,因此我对其进行了编辑以匹配您发布的内容
#create a dictionary from the lookup
repl = lookup.set_index('value')['description'].to_dict()
#print(repl)
{653: '30 to 39',
654: '40 to 49',
1056: 'Belgium',
1158: 'Taiwan',
1203: 'Czech Republic',
545: 'White',
530: 'Other'}
#pass it using pandas' replace method
df.replace(repl)
age cty eth
0 30 to 39 Belgium NaN
1 30 to 39 Belgium White
2 40 to 49 NaN Other
3 30 to 39 Taiwan Other
4 30 to 39 Czech Republic White
推荐阅读
- javascript - 序列化和缓存来自函数和回放结果快照的返回值
- javascript - 将 localdate 变量分配给另一个变量并将其存储在数据库中
- javascript - 仅获取数组的唯一值
- git - 如何在不授予对 gitlab 中的 repo 访问权限的情况下向用户授予拉取请求权
- c# - 在 Azure 上部署的 Web 无法访问 .less 文件(错误代码 404)。本地 IIS 部署正常工作
- git - 变基后,我的功能分支上的 master 的长时间提交和文件更改
- javascript - 尽管路径明显正确,如何修复 Node.js 文件路径错误?
- javascript - 在 React 组件中设置多个 Google Map 引脚
- html - 我有一个 html 内容,它占用了页面的完整宽度,但在 PDF 中它只占用了 50% 的宽度
- android - Android将listview数据转换为pdf文件并保存