Как заменить пустые значения ссылкой на другой фрейм данных? - PullRequest
1 голос
/ 29 марта 2020

У меня есть 2 кадра данных. Одним из них является справочная таблица со столбцами: код и имя. Другой - список словарей. Второй фрейм данных заполнен кодом, но некоторые имена являются пустыми строками. Я думаю о выполнении 2 для циклов, чтобы добраться до словаря. Но я новичок в этом, поэтому не уверен, как получить значение из справочной таблицы.

Начал с чего-то вроде этого:

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

Я не уверен, как поступить с кодом. Я думаю, что есть очень простой способ с функцией .map (). Может ли кто-нибудь помочь?

Справочная таблица: введите описание изображения здесь

Отредактируйте необходимую таблицу: введите описание изображения здесь

1 Ответ

1 голос
/ 29 марта 2020

Мне кажется, что в данном конкретном случае вы используете Pandas только для работы с Python структурами данных. Если это так, то имеет смысл вообще отказаться от Pandas и просто использовать Python структуры данных - обычно это приводит к большему количеству идиоматических c и читаемых кодов, которые часто работают лучше, чем Pandas с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...