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

使用Pandas将CSV中每10行合并为1行的实现方法

解决方法

针对你的需求——按原顺序每10行合并为一行、扩展val列并生成新的连续ID,这里有一套适合新手的Pandas实现步骤:

步骤说明

  1. 先确保数据索引是连续的0开始整数(避免原行号干扰分组)
  2. 生成分组标识,把每10行划分为一组
  3. 对每个组的val列进行横向拼接,生成新的val1到val100列
  4. 用分组编号生成新的连续ID

完整代码

import pandas as pd

# 假设你的原始数据存储在df中
# 第一步:重置索引为0开始的连续整数(如果原索引不是的话)
df = df.reset_index(drop=True)

# 第二步:生成分组标识,每10行一组
df['group'] = df.index // 10

# 第三步:定义函数,合并每组的val列
def merge_group_vals(group_data):
    # 提取所有val开头的列,转成一维数组(10行×10列 → 100个值)
    flattened_vals = group_data.filter(like='val').values.flatten()
    # 生成新的列名:val1 到 val100
    new_val_cols = [f'val{i+1}' for i in range(len(flattened_vals))]
    # 返回合并后的Series
    return pd.Series(flattened_vals, index=new_val_cols)

# 按分组处理数据,合并val列
merged_result = df.groupby('group').apply(merge_group_vals).reset_index()

# 第四步:替换为新的连续ID,调整列顺序
merged_result = merged_result.rename(columns={'group': 'ID'})
merged_result['ID'] = merged_result['ID'] + 1  # 让ID从1开始

# 把ID列移到最前面,和示例结构一致
final_result = merged_result[['ID'] + [col for col in merged_result.columns if col != 'ID']]

关键细节解释

  • df.index // 10:利用整数除法自动把每10行归为一组,完全保留原数据的顺序,不会排序
  • filter(like='val'):自动匹配所有以val开头的列,不管你有多少个val列(这里是val1到val10),都能正确提取
  • values.flatten():把每组的10行val数据横向拼接成一行100个值,正好对应val1到val100的新列

这样处理后,你就能得到和示例一致的结果:5000行数据变成500行,每行对应原数据的10行,val列扩展到100个,ID是连续的1到500,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:45:34