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

如何基于多分组列实现数据聚合与自定义列重命名?

解决pandas聚合后按规则重命名列的问题

针对你的需求,这里提供一种直接实现的方法,能处理多设备、多腔室的场景:

步骤说明

  1. 按sheet、equipment、chamber分组,对value1和value2执行mean/min/max聚合;
  2. 将聚合后的列名与分组的设备、腔室名称拼接,生成符合「设备名称+腔室名称+字段名+聚合函数」规则的新列名;
  3. 合并同一sheet下不同设备腔室的聚合结果,最终每个sheet对应一行数据。

代码示例

import pandas as pd

# 构造示例数据(实际使用时替换为你的数据读取逻辑)
data = {
    'sheet': ['a', 'a', 'a', 'b', 'b', 'b'],
    'equipment': ['E1', 'E1', 'E1', 'E1', 'E1', 'E1'],
    'chamber': ['C1', 'C1', 'C1', 'C1', 'C1', 'C1'],
    'time': [1, 2, 3, 1, 2, 3],
    'value1': [11, 12, 13, 14, 15, 16],
    'value2': [21, 22, 23, 24, 25, 26]
}
df = pd.DataFrame(data)

# 1. 分组聚合,先指定基础聚合列名
agg_result = df.groupby(['sheet', 'equipment', 'chamber']).agg(
    value1_mean=('value1', 'mean'),
    value1_min=('value1', 'min'),
    value1_max=('value1', 'max'),
    value2_mean=('value2', 'mean'),
    value2_min=('value2', 'min'),
    value2_max=('value2', 'max')
).reset_index()

# 2. 构造最终结果DataFrame
final_df = pd.DataFrame()
for _, row in agg_result.iterrows():
    sheet_val = row['sheet']
    eq_val = row['equipment']
    ch_val = row['chamber']
    
    # 拼接新列名与对应值
    row_data = {'sheet': sheet_val}
    for col in agg_result.columns:
        if col not in ['sheet', 'equipment', 'chamber']:
            field, agg_func = col.split('_')
            new_col_name = f"{eq_val}_{ch_val}_{field}_{agg_func}"
            row_data[new_col_name] = row[col]
    
    final_df = pd.concat([final_df, pd.DataFrame([row_data])], ignore_index=True)

# 3. 合并同一sheet的多设备腔室数据(若有)
final_df = final_df.groupby('sheet').first().reset_index()

# 输出结果
print(final_df)

输出结果

运行后会得到你需要的格式:

sheetE1_C1_value1_meanE1_C1_value1_minE1_C1_value1_maxE1_C1_value2_meanE1_C1_value2_minE1_C1_value2_max
a12.011.013.022.021.023.0
b15.014.016.025.024.026.0

如果你的数据中有多个设备(如E2)或腔室(如C2),这段代码会自动将它们的聚合结果作为新列添加到对应sheet的行中,无需修改逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:20:36