基于多个条件过滤数据框索引

3
pandas.DataFrame.filter 中,有没有一种方法可以使用“like”或“regex”参数来支持 OR 条件。例如:
df.filter(like='bbi', axis=1) 

我将筛选名称中包含bbi的列,但如何筛选包含'bbi''abc'的列?

以下几个选项失败:

df.filter(like='bbi' or 'abc', axis=1) 

df.filter(like=('bbi' or 'abc'), axis=1) 
3个回答

7
我会进行以下操作:
设置:
df=pd.DataFrame(np.random.randint(0,20,20).reshape(5,4),
                          columns=['abcd','bcde','efgh','bbia'])
print(df)

   abcd  bcde  efgh  bbia
0    10    17     2     7
1     7    12    18     9
2    17     7    11    17
3    14     4     2     9
4    15    10    12    11

解决方案:

使用df.filter

df.filter(regex=r'(abc|bbi)')

   abcd  bbia
0    10     7
1     7     9
2    17    17
3    14     9
4    15    11

3

不熟悉filter命令。但我认为你可以像这样实现你想要的:

df[(df['column'].str.contains('bbi', case=False)) | (df['column'].str.contains('abc', case=False))]

1
请查看附加的截图。输入图片描述[![输入图片描述 正则表达式搜索速度较慢,因此我们保持regex=False
希望这可以帮助您。谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接