2016-04-12 81 views
3

我想根据列名过滤掉我的熊猫数据框中的某些列。过滤掉熊猫数据框中的某些列

因此,框架大致是:

import pandas as pd 

dict_build = {'Var_1_Reading': [1,2,3,10,0.1], 'Var_1_Confidence':[1,1,1,1,1], 'Var_2_Reading': [1,2,3,10,0.1], 'Var_2_Confidence':[1,1,1,1,1]} 
df = pd.DataFrame(dict_build) 

我想在结束与Confidence砸列。我尝试了filter,但无法解决问题。目前我在做:

ColList_to_drop = df.filter(regex='Confidence', axis=1).columns.values 
filtered_df = df.drop(ColList_to_drop, axis = 1) 

我可以只是在正则表达式中完成这两个步骤吗?

回答

2

这应做到:

>>> cols = [col for col in df.columns if not col.endswith('Confidence')]  
>>> df = df[cols] 

>>> df 
    Var_1_Reading Var_2_Reading 
0   1.0   1.0 
1   2.0   2.0 
2   3.0   3.0 
3   10.0   10.0 
4   0.1   0.1 
2

您可以使用negative lookahead assertion(?!...)

print df.filter(regex='^(?!.*Confidence).*$') 
    Var_1_Reading Var_2_Reading 
0   1.0   1.0 
1   2.0   2.0 
2   3.0   3.0 
3   10.0   10.0 
4   0.1   0.1 
1

您可以直接使用在列索引的STR方法,如:

df.loc[:, df.columns.str.endswith('Confidence')]