首页 > 解决方案 > 如果给定行/列中存在键,则迭代键列表并添加到 Pandas DF

问题描述

我有一个相当大的(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)]

使其对所提供的任何长度的键都进行模块化将能够更快地处理数据请求。我觉得好像我错过了一些愚蠢的东西。如果有更有效/Pythonic 的方法,我会全力以赴。谢谢!

标签: pythonpandaslistiteration

解决方案


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

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

推荐阅读