python - pandas:从字典的逆映射创建列

标签 python pandas

我有一个包含公司名称的数据框和一个字典,该字典将名称的所有变体映射到一个正式名称。

我想根据该词典创建一个具有正式名称的新列。有没有比迭代字典中的键值更简洁的方法?

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/

相关文章:

python - 给定 2 个整数列表如何找到不重叠的范围?

python - python包中的脚本

python - 使用 xlsxwriter python 写入多个 excel 文件

python paraview如何获取颜色图范围的最小值和最大值

python - Python 排序代码语法

python Pandas DataFrame 复制(deep=False)vs 复制(deep=True)vs '='

python - 遍历列表以获取 python 中给定范围的最大总和

Python pandas 数据透视/堆栈操作

python - 如何在 Python 中编写一个在 20 个不同的 csv 文件上运行该函数的函数?

python - Pandas:选择第一个不再为负数的值,返回该行