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

合并相似DataFrame行:如何将同一用户多行转为宽格式

实现长格式DataFrame转指定宽格式的方法

当然可以!用pandas就能轻松搞定这个长表转宽表的需求,我给你一步步演示具体操作:

1. 构造示例数据

首先我们先还原你提供的原始DataFrame:

import pandas as pd

# 你的原始长格式DataFrame
df = pd.DataFrame({
    'User': ['John', 'John'],
    'Date': ['DateA', 'DateB'],
    'FeatureA': [1, 3],
    'FeatureB': [2, 5]
})

2. 添加组内序号

因为我们需要区分同一用户的不同行(第1条、第2条记录),所以给每个用户的记录添加一个从1开始的组内序号:

# 按User分组,给每组内的行分配序号(从1开始)
df['idx'] = df.groupby('User').cumcount() + 1

3. 重塑为宽格式

接下来用pivot方法把数据转成宽格式,然后重命名列名来匹配你想要的格式:

# 以User为索引,idx为列,把其他列展开
wide_df = df.pivot(index='User', columns='idx').reset_index()

# 把多级列名合并成"列名+序号"的格式(比如Date1、FeatureA1)
wide_df.columns = [f'{col[0]}{col[1]}' if col[1] != '' else col[0] for col in wide_df.columns]

4. 查看结果

运行完上面的代码后,打印wide_df就能得到你想要的格式:

print(wide_df)

输出结果:

UserDate1Date2FeatureA1FeatureA2FeatureB1FeatureB2
JohnDateADateB1325

额外说明

如果你的数据里同一个用户有更多条记录(比如3条),这个方法也能自动适配,会生成Date3、FeatureA3这类列名,完全不用修改代码~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:30:05