python - 如何参考另一个数据框替换空值?
问题描述
我有 2 个数据框。一种是包含列的参考表:代码和名称。另一个是字典列表。第二个数据框已填充代码,但有些名称为空字符串。我正在考虑执行 2 个 for 循环以获取字典。但是,我是新手,所以不确定如何从参考表中获取值。
从这样的事情开始:
for i in sample:
for j in i:
if j['name']=='':
(j['code'])
我不确定如何继续使用代码。我认为 .map() 函数有一种非常简单的方法。有人可以帮忙吗?
参考表: 在此输入图片描述
编辑所需表格: 在此处输入图像描述
解决方案
在我看来,在这种特殊情况下,您使用 Pandas 只是为了处理 Python 数据结构。如果是这样的话,完全抛弃 Pandas 并只使用 Python 数据结构是有意义的——通常,它会产生更惯用和可读的代码,这些代码通常比带有dtype=object
.
无论如何,这是代码:
import pandas as pd
sample_name = pd.DataFrame(dict(code=[8, 1, 6],
name=['Human development',
'Economic managemen',
'Social protection and risk management']))
# We just need a Series.
sample_name = sample_name.set_index('code')['name']
sample = pd.Series([[dict(code=8, name='')],
[dict(code=1, name='')],
[dict(code=6, name='')]])
def fix_dict(d):
if not d['name']:
d['name'] = sample_name.at[d['code']]
return d
def fix_dicts(dicts):
return [fix_dict(d) for d in dicts]
result = sample.map(fix_dicts)
推荐阅读
- r - 在 plotly 热图上强制缩放
- amazon-web-services - 如何将现有资源的标签传递给AWS CFT中的云手表警报?
- gcc - 为什么我的汇编转储中的地址与寄存器的地址不同?
- java - 生成自动运动
- python - 执行 python 列表中的 bash 命令
- go - Golang 前置数组
- azure-devops - 如何将 azure devops sprint 配置为数天而不是数小时
- visual-studio - VS2017 nuget一直在错误位置搜索包
- java - 如何在 Java 中设计以下数据结构
- sequelize.js - Sequelize - 如何选择 COUNT(*) 并进行 GROUP BY?