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

如何在DataFrame中按前缀分组创建均值、最小值新列?

解决方法

没问题,这在pandas里有挺直观的实现方式,我给你两种实用思路,按需选择就行:

方法1:针对单个前缀手动生成(适合前缀少的情况)

如果你的前缀只有A1、B1这类少数几个,直接用filter筛选对应列再聚合就行,代码简单易懂:

import pandas as pd

# 假设你的DataFrame名为df
df['A1_Mean'] = df.filter(like='A1_').mean(axis=1)  # 所有A1开头列的行均值
df['A1_Min'] = df.filter(like='A1_').min(axis=1)    # 所有A1开头列的行最小值
df['B1_Mean'] = df.filter(like='B1_').mean(axis=1)
df['B1_Min'] = df.filter(like='B1_').min(axis=1)
  • filter(like='A1_')会精准筛选出列名包含A1_的所有列;
  • axis=1指定按行计算聚合值(默认axis=0是按列,这里我们需要每行的均值/最小值)。

方法2:批量处理所有前缀(适合前缀多的情况)

如果后续还有C1、D1这类更多前缀,手动写每个前缀太麻烦,可以用列名分组的方式批量生成:

import pandas as pd

# 1. 提取所有列名的前缀(比如把"A1_Factor1"拆成"A1")
prefixes = df.columns.str.split('_').str[0]

# 2. 按前缀分组,批量计算均值和最小值
aggregated = df.groupby(prefixes, axis=1).agg(['mean', 'min'])

# 3. 重命名列,改成你需要的格式(比如"A1_mean"→"A1_Mean")
aggregated.columns = [f'{prefix}_{func.capitalize()}' for prefix, func in aggregated.columns]

# 4. 把聚合结果合并回原DataFrame
df = pd.concat([df, aggregated], axis=1)

这种方法会自动识别所有前缀(比如A1、B1、C1),一次性生成所有前缀的Mean和Min列,扩展性很强。

小提示

如果你的列名分隔符不是下划线_(比如用点.),只需要把str.split('_')改成对应的分隔符就行,比如str.split('.')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:48:20