You need to enable JavaScript to run this app. Pandas基于正则匹配选列进行多列求和的优化方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

Pandas基于正则匹配选列进行多列求和的优化方法咨询

多分组列聚合的优化实现方案

针对列数多、分组规则多的批量聚合场景,核心优化思路是将规则与处理逻辑解耦,避免重复编写过滤+聚合的冗余代码,以下是两种适配不同需求的实现方案:

方案1:规则字典批量生成(适配复杂正则场景)

适合分组匹配规则不统一、存在特殊匹配逻辑(比如某分组需要同时匹配多个前缀、排除特定列)的场景:

  • 先将所有分组的匹配规则存入独立字典,后续新增、修改分组仅需调整字典内容,无需改动核心处理逻辑
  • 实现代码:
# 定义分组规则:键为最终输出的列名,值为对应正则匹配规则
group_rules = {
    "A": r"^A\d+$",
    "B": r"^B\d+$",
    # 新增C、D等分组直接在此追加规则即可
}

# 批量生成聚合结果
result = pd.DataFrame(
    {
        group_name: test.filter(regex=rule).sum(axis=1)
        for group_name, rule in group_rules.items()
    }
)
  • 特性:灵活度最高,完全兼容原有单组过滤逻辑,支持任意复杂的正则匹配规则。

方案2:按列名分组直接聚合(适配命名高度规律场景)

如果所有列的命名规则完全统一(比如均为「分组前缀+序号」的固定结构),可以直接从列名提取分组键,省去手动编写过滤规则的步骤:

  • 先提取每个列对应的分组标识,以当前示例为例,提取列名第一个字符作为分组标识即可;如果是更复杂的命名规则,可以通过正则提取对应前缀:test.columns.str.extract(r"(^\D+)")[0]
  • 直接按列方向分组求和:
# 提取列名对应的分组键
col_group_keys = test.columns.str[0]
# 按分组聚合生成结果
result = test.groupby(col_group_keys, axis=1).sum()
  • 特性:代码量最少,自动适配新增的同规则列,后续新增符合命名规律的列时,无需额外修改代码。

两种方案的默认空值处理逻辑与原有代码完全一致,sum方法默认跳过pd.NA等空值,无需额外调整参数。

内容的提问来源于stack exchange,提问作者Snowflake

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 14:24:05