如何用另一个数据框替换空值?

时间:2020-03-29 14:17:33

标签: python dataframe data-science

我有2个数据帧。一种是带有列的参考表:代码和名称。另一个是字典列表。第二个数据框已填充代码,但有些名称为空字符串。我正在考虑执行2 for循环以到达字典。但是,我对此并不陌生,所以不确定如何从引用表中获取值。

首先是这样的:

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

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

参考表: enter image description here

编辑所需的表: enter image description here

1 个答案:

答案 0 :(得分:1)

在我看来,在这种情况下,您仅使用Pandas处理Python数据结构。在这种情况下,完全抛弃Pandas并只使用Python数据结构是有道理的-通常,它会导致更具惯用性和可读性的代码,通常比使用dtype=object的Pandas更好。

无论如何,这是代码:

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)