在 Pandas 数据框中过滤多个列以获取相同的字符串

Posted

技术标签:

【中文标题】在 Pandas 数据框中过滤多个列以获取相同的字符串【英文标题】:Filter multiple columns in Pandas data frame for same string 【发布时间】:2021-07-12 21:31:06 【问题描述】:

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

df_out.filter(regex='_out')

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

Filter_1 = df_out[‘column1_out’].isin([‘Normal]) 然后df_out[Filter_1]

但是除了 30 of these columns 之外,我觉得必须有一种精简的方式来完成这项工作。

【问题讨论】:

你能展示示例数据框吗 我不是反对你的人 别担心,哥们,我几乎 8 年前就放弃了查看堆栈 upvote/downvote!显示我的数据结构非常困难,因为我的大部分 _out cols 都是即时创建的。但是我在@Ynjxsjmh 下面的答案中得到了很好的提示,我可以从那里继续前进! 【参考方案1】:

您可以使用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]

【讨论】:

以上是关于在 Pandas 数据框中过滤多个列以获取相同的字符串的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如何比较导入的 csv 文件的列以确保它们相同?

pandas groupby 应用于多个列以生成新列

Pandas 过滤多个串联子串

Pandas 组合 BQ 表中的多个列以生成 FB 转换 api 的有效负载

在 Pandas 中重命名多个列

在 Pandas 数据框中按组过滤具有最小值的行 [重复]