为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

隔江千里 2021-12-09 15:22:37
df_train = pd.read_csv('../xyz.csv') headers = df_train.columns我想过滤掉标题中包含_pct在其子字符串中的那些列。
查看完整描述

3 回答

?
慕丝7291255

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 


查看完整回答
反对 回复 2021-12-09
?
一只名叫tom的猫

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)


查看完整回答
反对 回复 2021-12-09
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

df.columns返回列名列表时,您可以使用列表理解并使用简单条件构建新列表:

new_headers = [x for x in headers if '_pct' not in x]


查看完整回答
反对 回复 2021-12-09
  • 3 回答
  • 0 关注
  • 269 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号