首页 > 解决方案 > 如何使 Pandas 列名提取的迭代循环更有效?

问题描述

如何让这段代码更有效率?我正在尝试在更大的 100 列数据框中实现以下给出的逻辑。这个想法是采用所需的关键字并执行进一步的过滤,如过滤后的df = df[result]

search_list= ['A','B']
df_column_names=['Apple','Airplanne','Banana','Ball','Bat','Cat','Champ','Dog','OX','Zebra']
result=[]

for search_string in search_list:
    for column_name in df_column_names:
        if search_string in column_name:
            result.append(column_name)

结果 =['Apple', 'Airplanne', 'Banana', 'Ball', 'Bat']

获取结果并执行过滤,如 filters_df = df[result]

标签: pythonpandasfor-loopif-statement

解决方案


您可以将正则表达式直接传递给pandas.DataFrame.filter. 在这种情况下,它是一个非常基本的 RegEx。


df.filter(regex='|'.join(search_list))

Empty DataFrame
Columns: [Apple, Airplanne, Banana, Ball, Bat]
Index: []

推荐阅读