我想通过保留所有不以特定字符串开头的列来对数据帧的列索引进行子集化。现在,我可以过滤以某个字符串开头的列的列索引,但是我想做相反的事情,并排除匹配某个条件的列名。
如果要保留列
如果尝试保留以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
答案 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