我有一个包含公司名称的数据框和一个字典,该字典将名称的所有变体映射到一个正式名称。
我想根据该词典创建一个具有正式名称的新列。有没有比迭代字典中的键值更简洁的方法?
df = pd.DataFrame({'name' : ['company a', 'company a inc', 'a electronics', 'company a ltd', 'the company a', 'b enterprises', 'company b']})
name_dict = {'company a' : ['company a', 'company a inc', 'a electronics', 'company a ltd', 'the company a'],
'company b' : ['b enterprises', 'company b']}
def get_company_name(name):
for k, v in name_dict.items():
if name in v:
return k
df['official_name'] = df.name.apply(get_company_name)
最佳答案
我将创建前向字典并替换:
forward_names = {v:k for k, val in name_dict.items() for v in val }
df['official_name'] = df['name'].replace(forward_names)
关于python - pandas:从字典的逆映射创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56079638/