【问题标题】:How to replace empty values with reference to another dataframe?如何参考另一个数据框替换空值?
【发布时间】:2020-03-29 14:17:33
【问题描述】:

我有 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

【问题讨论】:

    标签: python dataframe data-science


    【解决方案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)
    

    【讨论】:

    • 您提供的代码是对数据进行硬编码。我提到的参考表是另一段代码的结果。那么,您要将数据帧转换回字典吗?
    • 我对数据进行硬编码只是因为我不知道最初创建它的代码。毕竟这只是一个例子。我会将所有内容都转换为字典,是的。如果您在上面谈论重新分配sample_name,则可以使用不同的名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多