如何在Python中的名称列表之外选择数据框的列

时间:2019-07-09 21:21:55

标签: python regex pandas dataframe

我想通过保留所有不以特定字符串开头的列来对数据帧的列索引进行子集化。现在,我可以过滤以某个字符串开头的列的列索引,但是我想做相反的事情,并排除匹配某个条件的列名。

如果要保留列

如果尝试保留以FR开头的列名,那么我将使用此代码,该代码将起作用。

factor_list = df2.filter(like = 'FR_', axis=1).columns

试图排除以“ FR”开头的列,我尝试了很多事情,包括以下内容:

factor_list = df2.filter(like != 'FR_', axis=1).columns
factor_list = ~df2.filter(like = 'FR_', axis=1).columns

3 个答案:

答案 0 :(得分:0)

您与df.filter距离很近。在这种情况下,通过过滤所有不以?!^开始的列(FR_),可以使用正则表达式:

df.filter(regex='^(?!FR_)')

   Col1  Col3
0     2     8
1     0     7
2     4     1
3     2     6
4     4     8
# Example dataframe
df = pd.DataFrame({'Col1':np.random.randint(0,10,5),
                   'FR_Col2':np.random.randint(0,10,5),
                   'Col3':np.random.randint(0,10,5),
                   'FR_Col4':np.random.randint(0,10,5)})

   Col1  FR_Col2  Col3  FR_Col4
0     2        1     8        5
1     0        7     7        9
2     4        8     1        9
3     2        2     6        9
4     4        9     8        3

答案 1 :(得分:0)

这应该为您工作。请检查上面的链接以获取更多详细信息。

factor_list = df2.loc[:,~df.columns.str.startswith('FR')]

答案 2 :(得分:0)

你可以

y