猿问

Python:如何根据列名称中的子字符串匹配从数据集中过滤出列

df_train = pd.read_csv('../xyz.csv')
headers = df_train.columns

我想过滤掉标题中包含_pct在其子字符串中的那些列。


隔江千里
浏览 270回答 3
3回答

慕丝7291255

使用df.filterdf = pd.DataFrame({'a':[1,2,3], 'b_pct':[1,2,3],'c_pct':[1,2,3],'d':[1]*3})print(df.filter(items=[i for i in df.columns if '_pct' not in i]))## or as jezrael suggested# print(df[[i for i in df.columns if '_pct' not in i]])输出:   a  d                                                                                                                                                           0  1  1                                                                                                                                                           1  2  1                                                                                                                                                           2  3  1 

一只名叫tom的猫

用:#data from AkshayNevrekar answerdf = df.loc[:, ~df.columns.str.contains('_pct')]print (df)过滤器解决方案并非微不足道:df = df.filter(regex=r'^(?!.*_pct).*$')   a  d0  1  11  2  12  3  1谢谢@IanS 提供另一种解决方案:df[df.columns.difference(df.filter(like='_pct').columns).tolist()]df.drop(df.filter(like='_pct').columns, axis=1)

蝴蝶不菲

当df.columns返回列名列表时,您可以使用列表理解并使用简单条件构建新列表:new_headers = [x for x in headers if '_pct' not in x]
随时随地看视频慕课网APP

相关分类

Python
我要回答