Сначала создайте словарь по каждому списку:
EMEA = ['john','jack','judy','jared']
APAC = ['jill','james']
d = {'EMEA' : EMEA,
'APAC': APAC}
Затем поменяйте порядок с выравниванием:
d1 = {x: k for k, v in d.items() for x in v}
print (d1)
{'john': 'EMEA', 'jack': 'EMEA', 'judy': 'EMEA',
'jared': 'EMEA', 'jill': 'APAC', 'james': 'APAC'}
В последнем случае замените только ошибочные значения сопоставленными значениями на Series.map
и Series.fillna
:
df['geo'] = df['geo'].fillna(df['name'].map(d1))
print (df)
name geo
0 john EMEA
1 jack EMEA
2 jill APAC
3 james APAC
4 judy EMEA
5 jared EMEA
Или сопоставьте все значения:
df['geo'] = df['name'].map(d1)
print (df)
name geo
0 john EMEA
1 jack EMEA
2 jill APAC
3 james APAC
4 judy EMEA
5 jared EMEA