2016-04-12 80 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')]