我有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
答案 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)