如何筛选DataFrame中名称包含连续三位数字的列
筛选符合命名规则的DataFrame列方法
正则规则说明
你需要的匹配「三位数字后接_diff」的规则用正则可以写为\d{3}_diff,其中:
\d{3}代表连续出现的3位数字_diff是固定匹配的后缀
如果需要严格要求该结构出现在列名末尾,可在末尾加结束符$,即正则改为\d{3}_diff$,避免匹配到中间包含该结构的列名。
实现方式1:列表推导式
需要搭配re模块做正则匹配:
import re # 编译正则规则,可根据需求替换为r'121_diff'匹配指定数字 pattern = re.compile(r'\d{3}_diff') # 列表推导式筛选符合规则的列名 selected_cols = [col for col in merged.columns if pattern.search(col)] # 提取目标列 result_df = merged[selected_cols]
实现方式2:pandas filter方法(更简洁)
直接使用filter的regex参数即可,不需要额外写循环:
# 匹配所有符合三位数字+_diff规则的列 result_df = merged.filter(regex=r'\d{3}_diff') # 匹配包含121_diff的列,等效于你之前用like参数的效果 result_df = merged.filter(regex=r'121_diff')
内容的提问来源于stack exchange,提问作者Maths12
相关产品推荐
相关产品推荐

