You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化实现从源DataFrame动态筛选A_*、B_*列生成新DataFrame

如何优化实现从源DataFrame动态筛选A_*、B_*列生成新DataFrame

嘿,我懂你不想写那种重复又生硬的条件判断代码,其实有更简洁灵活的方式来实现需求,完全不用纠结先选部分列再补全的问题~

你可以直接动态筛选符合命名规则的列,不用提前预判有多少个A_*或B_*列,下面给你两种实用的方法:

方法一:用字符串前缀筛选(简单直接)

这种方式适合只要列名以A_或B_开头就保留的场景,扩展性很强——哪怕以后新增A_3、B_3这类列,代码也不用改:

# 遍历所有列,筛选出以"A_"或"B_"开头的列
selected_cols = [col for col in df_source.columns if col.startswith(('A_', 'B_'))]
df_new = df_source[selected_cols]

方法二:用正则表达式精准匹配(更严谨)

如果你的列名严格是A_数字或B_数字的格式,用正则表达式能更精准地匹配,避免误选其他类似命名的列:

import re

# 匹配以A/B开头,后跟下划线和数字的列名
selected_cols = [col for col in df_source.columns if re.match(r'^[AB]_\d+$', col)]
df_new = df_source[selected_cols]

为什么这两种方法更好?

对比你原来的写法,这两种方式:

  • 不用写if判断逻辑,代码更简洁
  • 自动适配2列、4列甚至更多符合规则的列,扩展性拉满
  • 保留源DataFrame中列的原有顺序,符合你的使用习惯

备注:内容来源于stack exchange,提问作者Coleman YU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:13:07