在pandas数据框中过滤特定列

3

我希望您能够根据列名筛选出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个回答

2
你可以直接在列索引上使用 str 方法,例如:
df.loc[:, ~df.columns.str.endswith('Confidence')]

我刚意识到你想要删除列而不是选择它们。因此,我在列过滤器上添加了一个否定。 - Rob

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

您可以使用负向前瞻断言(?!...)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接