在 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 文件的列以确保它们相同?