过滤数据由str.contains

时间:2018-04-12 21:57:01

标签: python pandas dataframe

我尝试按可能包含以下字符串的列过滤我的大数据' io'和' ir'。

DF1

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

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

index  aio   bir  
1      2     3    
2      3     4     

我试过

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

但我收到错误提示类型对象' str'没有属性'包含'

2 个答案:

答案 0 :(得分:5)

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')]

答案 1 :(得分:1)

您提到str.contains

df.loc[:,df.columns.str.contains('io|ir')]
Out[354]: 
       aio  bir
index          
1        2    3
2        3    4