过滤掉pandas数据帧中的某些列

时间:2016-04-12 06:26:29

标签: python regex pandas

我正在尝试根据列名过滤出我的pandas数据框中的某些列。

所以框架大致是:

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)

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

3 个答案:

答案 0 :(得分: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

答案 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

答案 2 :(得分:1)

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

fuzziness