首页 > 解决方案 > 在 Pandas 数据框中过滤多个列以获取相同的字符串

问题描述

我正在寻找一种简单有效的方法来过滤具有相同字符串 ( 'Normal') 的 pandas 数据框中的多个列。这些列具有特定的后缀(_out),可以使用regexlike过滤

df_out.filter(regex='_out')

目前我正在使用单个过滤器,例如

Filter_1 = df_out[‘column1_out’].isin([‘Normal])进而df_out[Filter_1]

但是拥有超过30 of these columns,我觉得必须有一种精益的方式来完成这项工作。

标签: python-3.xregexpandasdataframefilter

解决方案


您可以使用df_out.columns.str.contains('_out')提取所有包含_out.

mask = np.logical_and.reduce([df_out[col].isin(['Normal']) for col in df_out.columns[df_out.columns.str.contains('_out')]])
df_out[mask]

或者

mask = np.logical_and.reduce([df_out[col].isin(['Normal']) for col in df_out.filter(regex='_out').columns])
df_out[mask]

推荐阅读