Python 迭代列以与dict值匹配

Python 迭代列以与dict值匹配,python,string,dictionary,isin,Python,String,Dictionary,Isin,我有一个类似的口述: dict = {'color':['red', 'blue', 'green'], 'fruits':['apple', 'banana', 'grape'], 'animal':['cat', 'dog']} df有两列;包含多个字符串的文本列: 索引|文本 ------------------------------- 房子、椅子、绿色 ------------------------------- 黄色、香蕉色、墙壁色 -----------------------

我有一个类似的口述:

dict = {'color':['red', 'blue', 'green'], 'fruits':['apple', 'banana', 'grape'], 'animal':['cat', 'dog']}
df有两列;包含多个字符串的文本列:

索引|文本
-------------------------------
房子、椅子、绿色
-------------------------------
黄色、香蕉色、墙壁色
--------------------------------
狗,棕色,草
--------------------------------
如果文本列中的任何字符串与dict.values匹配,我想使用dict中的密钥对向df添加额外的列,因此对于a-color/b-fruits/c-animal


我试着用isin查找列表,但我想也许用dict会更有效。?感谢任何帮助

最简单的方法就是使用

但是,请记住,
apply()
的优化效果很差,这大致相当于使用for循环来应用函数

如果性能是一个问题,你可能会考虑翻转你的字典,比如“代码> {红色”:“颜色”、“蓝色”:“颜色”…} /代码>,写一个更简单的函数,如

def get_type(input_strs):
    for input_str in input_strs:
        if input_str in type_dict:
            return type_dict[input_str]

你也可以考虑在熊猫中使用一系列优化的函数,比如假设代码> df[text ] 是一系列的STR,而不是STR列表。对于一系列列表,没有优化的pandas函数,如果性能是一个优先事项,则将列表保留在数据帧中通常是一个坏主意。

欢迎使用堆栈溢出!请拿起,阅读,和,并提供一个。“为我实现此功能”是本网站的主题。你必须做出诚实的尝试,然后问一个关于你的算法或技术的具体问题。
def get_type(input_strs):
    for input_str in input_strs:
        if input_str in type_dict:
            return type_dict[input_str]