python – 由str.contains过滤数据

我正在尝试按可能包含以下字符串’io’和’ir’的列过滤我的大数据.

DF1

index  aio   bir   ckk
1      2     3     4
2      3     4     5

我想用包含’io’和’ir的列创建一个新的df.
新的df应该看起来:

index  aio   bir  
1      2     3    
2      3     4     

我试过了

df = df[:, str.contains('io','ir')] 

但我得到一个错误说类型对象’str’没有属性’包含’

最佳答案 使用pd.DataFrame.filter

df.filter(regex='i(o|r)')

       aio  bir
index          
1        2    3
2        3    4

如果你有一个匹配的东西列表

things = ['io', 'ir']
df.filter(regex='|'.join(things))

       aio  bir
index          
1        2    3
2        3    4

备择方案

df.filter(regex='io|ir')
df.loc[:, df.columns.str.contains('io|ir')]
点赞