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

如何按每5行执行group by并将值转换为列表列格式

数据表格分组转换实现方案

需求说明

需要对数据表格执行以下转换:

  • 按每5行进行分组
  • 每组内Value1的各行值依次填入a、b、c、d、e列,Value2的各行值同理
  • 每组的Data set字段取该组首行的Data set值
  • 新增Value字段区分Value1和Value2

原始表格

Data setValue1Value2
1.123
1.245
1.367
1.489
1.51011
2.123
2.245
2.367
2.489
2.51011

目标表格

Data setValueabcde
1.1Value 1246810
1.1Value 2357911
2.1Value 1246810
2.1Value 2357911

实现代码(Python Pandas)

以下是用Pandas库实现上述转换的代码:

import pandas as pd

# 构造原始数据(实际场景可替换为读取文件逻辑)
df = pd.DataFrame({
    'Data set': ['1.1', '1.2', '1.3', '1.4', '1.5', '2.1', '2.2', '2.3', '2.4', '2.5'],
    'Value1': [2,4,6,8,10,2,4,6,8,10],
    'Value2': [3,5,7,9,11,3,5,7,9,11]
})

# 生成每5行一组的分组标识
df['group_id'] = df.index // 5

# 处理分组并生成结果
result_rows = []
for _, group_data in df.groupby('group_id'):
    group_ds = group_data['Data set'].iloc[0]
    # 生成Value1对应的行
    val1_row = {
        'Data set': group_ds,
        'Value': 'Value 1',
        'a': group_data['Value1'].iloc[0],
        'b': group_data['Value1'].iloc[1],
        'c': group_data['Value1'].iloc[2],
        'd': group_data['Value1'].iloc[3],
        'e': group_data['Value1'].iloc[4]
    }
    # 生成Value2对应的行
    val2_row = {
        'Data set': group_ds,
        'Value': 'Value 2',
        'a': group_data['Value2'].iloc[0],
        'b': group_data['Value2'].iloc[1],
        'c': group_data['Value2'].iloc[2],
        'd': group_data['Value2'].iloc[3],
        'e': group_data['Value2'].iloc[4]
    }
    result_rows.extend([val1_row, val2_row])

# 转换为最终DataFrame
final_df = pd.DataFrame(result_rows).reset_index(drop=True)
print(final_df)

代码说明

  1. 分组逻辑:通过df.index // 5生成连续的分组标识,精准实现每5行一组的需求
  2. 组内数据提取:遍历每个分组,提取组内首行的Data set值作为该组的标识值
  3. 列映射:将每组内Value1、Value2的5个行值分别映射到a-e列,生成对应两行数据
  4. 结果整合:将所有分组的结果行整合为最终的目标格式DataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:55:22