首页 > 解决方案 > 如何参考另一个数据框替换空值?

问题描述

我有 2 个数据框。一种是包含列的参考表:代码和名称。另一个是字典列表。第二个数据框已填充代码,但有些名称为空字符串。我正在考虑执行 2 个 for 循环以获取字典。但是,我是新手,所以不确定如何从参考表中获取值。

从这样的事情开始:

for i in sample:
    for j in i:
        if j['name']=='':
            (j['code'])

我不确定如何继续使用代码。我认为 .map() 函数有一种非常简单的方法。有人可以帮忙吗?

参考表: 在此输入图片描述

编辑所需表格: 在此处输入图像描述

标签: pythondataframedata-science

解决方案


在我看来,在这种特殊情况下,您使用 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)

推荐阅读