根据多个条件过滤数据帧索引

Zak*_*akS 3 filter pandas

pandas.DataFrame.filter中,有一种方法可以使用参数“like”或“regex”,以便它们支持 OR 条件。例如:

df.filter(like='bbi', axis=1) 
Run Code Online (Sandbox Code Playgroud)

将过滤名称中包含的列bbi,但是如何过滤包含'bbi'OR的列'abc'

一些失败的选项:

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

df.filter(like=('bbi' or 'abc'), axis=1) 
Run Code Online (Sandbox Code Playgroud)

ank*_*_91 7

我会做以下事情:

设置:

df=pd.DataFrame(np.random.randint(0,20,20).reshape(5,4),
                          columns=['abcd','bcde','efgh','bbia'])
print(df)
Run Code Online (Sandbox Code Playgroud)
   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
Run Code Online (Sandbox Code Playgroud)

解决方案:

使用df.filter

df.filter(regex=r'(abc|bbi)')
Run Code Online (Sandbox Code Playgroud)
   abcd  bbia
0    10     7
1     7     9
2    17    17
3    14     9
4    15    11
Run Code Online (Sandbox Code Playgroud)