如何用Pandas的df.filter筛选含多个关键词的多列?
筛选包含指定关键词的多类列的解决方案
嘿,我来帮你搞定这个筛选问题!从你给出的列名来看,你应该是想把列名包含Frequency的列,以及所有包含2018-08-19的列都选出来对吧?其实正则是可以实现的,或者用布尔索引的方式会更直观,下面给你两种可行的方法:
方法1:用df.filter()结合正则表达式
正则里的|符号表示“或”的逻辑,直接把两个关键词用它连接起来就能匹配满足任一条件的列:
filtered_df = df.filter(regex='Frequency|2018-08-19')
这样就能一次性筛选出所有包含Frequency或者2018-08-19的列啦。
方法2:用布尔索引筛选列
如果你觉得正则不够直观,也可以用str.contains()生成布尔掩码来筛选:
# 生成布尔掩码:列名包含Frequency 或者 包含2018-08-19 mask = df.columns.str.contains('Frequency') | df.columns.str.contains('2018-08-19') # 用掩码筛选列 filtered_df = df.loc[:, mask]
这种方式灵活性更高,如果之后需要添加更多筛选条件,直接在掩码里用|(或)或者&(且)组合就行。比如如果真的需要筛选同时包含两个关键词的列(虽然你的列名里没有这类,但可以参考),只需要把|换成&:
mask = df.columns.str.contains('Frequency') & df.columns.str.contains('2018-08-19') filtered_df = df.loc[:, mask]
内容的提问来源于stack exchange,提问作者Sophia Deng
相关产品推荐
相关产品推荐

