python - 如何使用 Pandas 数据框的常用键填充多个字典?
问题描述
我有一个字典列表,其中键相同但每个字典中的值不相同,并且每个字典的顺序都严格保留。我正在尝试找到一种自动解决方案来将这些字典作为新列填充到 pandas 数据框,但没有得到预期的输出。
有关要点的原始数据
这是我在 gist 上的旧数据上的数据。
我的尝试
这是我尝试用相同的键但不同的值(二进制值)填充多个字典,我的目标是我想写下方便的函数来矢量化代码。这是我效率低下的代码,但适用于要点
import pandas as pd
dat= pd.read_csv('old_data.csv', encoding='utf-8')
dat['type']=dat['code'].astype(str).map(typ)
dat['anim']=dat['code'].astype(str).map(anim)
dat['bovin'] = dat['code'].astype(str).map(bov)
dat['catg'] = dat['code'].astype(str).map(cat)
dat['foot'] = dat['code'].astype(str).map(foo)
我的代码有效,但没有矢量化(我认为效率不高)。我想知道如何使这几行简单的功能。任何想法?我们如何尽可能有效地做到这一点?
这是我当前和所需的输出:
因为我得到了正确的输出,但这里的代码效率不高。这是我目前在gist上的输出
解决方案
如果您将字典重组为字典字典,则可以将其排成一行:
for keys in values.keys():
dat[keys]=dat['code'].astype(str).map(values[keys])
完整代码:
values = {"typ" :{
'20230' : 'A',
'20130' : 'A',
'20220' : 'A',
'20120' : 'A',
'20329' : 'A',
'20322' : 'A',
'20321' : 'B',
'20110' : 'B',
'20210' : 'B',
'20311' : 'B'
} ,
"anim" :{
'20230' : 'AOB',
'20130' : 'AOB',
'20220' : 'AOB',
'20120' : 'AOB',
'20329' : 'AOC',
'20322' : 'AOC',
'20321' : 'AOC',
'20110' : 'AOB',
'20210' : 'AOB',
'20311' : 'AOC'
} ,
"bov" :{
'20230' : 'AOD',
'20130' : 'AOD',
'20220' : 'AOD',
'20120' : 'AOD',
'20329' : 'AOE',
'20322' : 'AOE',
'20321' : 'AOE',
'20110' : 'AOD',
'20210' : 'AOD',
'20311' : 'AOE'
} ,
"cat" :{
'20230' : 'AOF',
'20130' : 'AOG',
'20220' : 'AOF',
'20120' : 'AOG',
'20329' : 'AOF',
'20322' : 'AOF',
'20321' : 'AOF',
'20110' : 'AOG',
'20210' : 'AOF',
'20311' : 'AOG'
} ,
"foo" :{
'20230' : 'AOL',
'20130' : 'AOL',
'20220' : 'AOM',
'20120' : 'AOM',
'20329' : 'AOL',
'20322' : 'AOM',
'20321' : 'AOM',
'20110' : 'AOM',
'20210' : 'AOM',
'20311' : 'AOM'
}
}
import pandas as pd
dat= pd.read_csv('old_data.csv', encoding='utf-8')
for keys in values.keys():
dat[keys]=dat['code'].astype(str).map(values[keys])
推荐阅读
- design-patterns - 如何从现有的写入数据库生成 CQRS 中的读取数据?
- javascript - 如何在 react-data-grid 中的行选择中禁用行的复选框
- android - Android Kotlin 应用程序未根据接收到的蓝牙数据显示或隐藏图像
- python - DataTable(JQuery):如何用浏览器语言切换语言?
- java - 玩家控制的 JPanel 对象卡在 JFrame 的某些角落
- python - 我怎么能把输入保存为一个整数然后通过一个函数运行它
- reactjs - 在 React Typescript 中配置更漂亮的空格
- python - python抛物线拍摄动画与matplotlib
- python - 如何在模板中获取 Flask 蓝图的名称?
- php - 在 php 类中动态创建“受保护的静态”变量