我正在尝试根据列名过滤出我的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)
我可以在正则表达式中完成这两个步骤吗?
答案 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