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

Pandas中如何对列名含相同字符串的多个列执行分析

问题解决方法

你之前的代码报错核心原因是:当筛选出多列包含abc的字段时,等号右侧是多列组成的DataFrame,直接赋值给单个列df['ABC']会触发维度不匹配错误。另外你伪代码里逐列遍历判断的逻辑没有必要,只需要先统一筛选目标列、判断列数后再执行对应分析即可,具体实现如下:

核心实现代码

import pandas as pd

# 示例测试数据
d = {'id': [1, 2, 3], '1-abc': [13, 15, 27], '2-abc': [23, 36, 12]}
df = pd.DataFrame(data=d)

# 第一步:筛选所有列名包含'abc'的字段
abc_columns = [col for col in df.columns if 'abc' in col]

# 第二步:按列数判断是否执行分析逻辑
if len(abc_columns) > 1:
    # 下方替换为你实际需要执行的分析逻辑,以下为常见场景示例
    # 示例1:按行对所有abc列求和,生成汇总列
    df['ABC_sum'] = df[abc_columns].sum(axis=1)
    # 示例2:对所有abc列做标准化处理
    # df[abc_columns] = (df[abc_columns] - df[abc_columns].mean()) / df[abc_columns].std()
    # 示例3:批量计算所有abc列的统计指标
    # abc_col_stats = df[abc_columns].describe()
else:
    # 匹配到的abc列数量不足2个时直接跳过
    pass

批量处理多DataFrame写法

如果你需要对多个DataFrame批量执行这套判断逻辑,可以直接遍历DataFrame列表执行:

# 替换为你需要处理的所有DataFrame
all_dfs = [df1, df2, df3]

for current_df in all_dfs:
    abc_columns = [col for col in current_df.columns if 'abc' in col]
    if len(abc_columns) > 1:
        # 替换为你的分析逻辑
        current_df['ABC_sum'] = current_df[abc_columns].sum(axis=1)

注意点

  • 不要直接把筛选出的多列DataFrame赋值给单个新列,必须先明确多列的计算规则(比如按行汇总、逐列转换等),再做赋值操作
  • 判断列数的逻辑是针对整个DataFrame的全局判断,不需要逐列遍历执行,会产生不必要的性能损耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:48:22