Python 迭代键列表,如果给定行/列中存在键,则将其添加到列表中

Python 迭代键列表,如果给定行/列中存在键,则将其添加到列表中,python,pandas,list,iteration,Python,Pandas,List,Iteration,我有一个相当大(57k行)的数据文件,我经常访问它,其中包含人员列表和他们的技能集。我想输入一个关键字列表并输出一个DF,其中只包含那些关键字所在的行,如下所示: key_list = ('LEAN', 'SIGMA', 'Toyota') for key in key_list: df1 = df[df[col_key].str.contains(key, case=False)] # col_key previously defined. 在上述情况下,我只会得到丰田的结果。要

我有一个相当大(57k行)的数据文件,我经常访问它,其中包含人员列表和他们的技能集。我想输入一个关键字列表并输出一个DF,其中只包含那些关键字所在的行,如下所示:

key_list = ('LEAN', 'SIGMA', 'Toyota')

for key in key_list:
    df1 = df[df[col_key].str.contains(key, case=False)]

# col_key previously defined.
在上述情况下,我只会得到丰田的结果。要捕获所有密钥,我需要指定:

df1 = df[df[col_key].str.contains('sigma', case=False) |
    df[col_key].str.contains('LEAN', case=False) |
    df[col_key].str.contains('SIGMA', case=False) |
    df[col_key].str.contains('Toyota', case=False)]

将其模块化以适应所提供的任意长度的键,将能够更快地转换数据。我觉得我好像错过了一些愚蠢的事情。如果有更有效的方法,我洗耳恭听。谢谢大家!

您可以检查每个值是否包含键列表中的任何单词,例如:

df[df[col_key].apply(lambda x: any([word.lower() in x.lower() for word in key_list]))]

这很有效!非常感谢你。老实说,我需要将其分解,以真正了解逐项发生的情况,但我知道的足够多,可以把它放进去,我的测试数据给了我预期的结果。