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

Pandas按ID合并重复行并为每组数据生成Result、Date新列的方法

pandas按ID合并重复行生成多列的实现方案

实现思路

核心通过groupby生成组内序号,再配合透视表展开实现需求,该方法支持每个ID对应任意条数的记录,会自动生成对应数量的ResultX、DateX列,适配性强。

完整实现代码

import pandas as pd

# 1. 构造示例DataFrame
df = pd.DataFrame({
    'ID': [1, 1, 2, 2],
    'Gender': ['M', 'M', 'F', 'F'],
    'Result': ['Pos', 'Pos', 'Neg', 'Pos'],
    'Date': [1, 10, 5, 7]
})

# 2. 为每个ID分组生成组内序号(从1开始计数)
df['group_idx'] = df.groupby('ID').cumcount() + 1

# 3. 透视表展开字段
res = df.pivot_table(
    index=['ID', 'Gender'],
    columns='group_idx',
    values=['Result', 'Date'],
    aggfunc='first'
)

# 4. 调整列名格式
res.columns = [f'{col[0]}{col[1]}' for col in res.columns]

# 5. 重置索引并调整列顺序为目标格式
res = res.reset_index()
col_order = ['ID', 'Gender']
for num in range(1, df['group_idx'].max() + 1):
    col_order.extend([f'Result{num}', f'Date{num}'])
res = res[col_order]

输出结果

执行后res的结构完全匹配需求:

IDGenderResult1Date1Result2Date2
1MPos1Pos10
2FNeg5Pos7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:15:03