3 回答
TA贡献1859条经验 获得超6个赞
使用df.filter
df = 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
TA贡献1906条经验 获得超3个赞
用:
#data from AkshayNevrekar answer
df = df.loc[:, ~df.columns.str.contains('_pct')]
print (df)
过滤器解决方案并非微不足道:
df = df.filter(regex=r'^(?!.*_pct).*$')
a d
0 1 1
1 2 1
2 3 1
谢谢@IanS 提供另一种解决方案:
df[df.columns.difference(df.filter(like='_pct').columns).tolist()]
df.drop(df.filter(like='_pct').columns, axis=1)
TA贡献1810条经验 获得超4个赞
当df.columns返回列名列表时,您可以使用列表理解并使用简单条件构建新列表:
new_headers = [x for x in headers if '_pct' not in x]
添加回答
举报
