Мне кажется, что в данном конкретном случае вы используете 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)