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

Pandas按分组将多行数据转为多列的实现问题咨询

问题原因

你原有代码运行不符合预期的核心原因是:unstack() 需要基于多级索引展开,你仅设置了userid作为单级索引,缺少代表同一用户下account序列的二级索引,无法完成行转列的展开操作。

解决代码

import pandas as pd

# 构造原始数据(如果已经有df可跳过这一步)
data = {'userid': ['001', '001', '002', '002', '002'],
        'account': ['123', '456', '789', '123', '467']}
df = pd.DataFrame(data)

# 核心处理逻辑
# 1. 给同一userid下的每条account生成序号,拼接为 account 1、account 2格式的序列名
df['acc_seq'] = 'account ' + (df.groupby('userid').cumcount() + 1).astype(str)
# 2. 设置userid和序列列为多级索引,提取account列后展开为多列
df = df.set_index(['userid', 'acc_seq'])['account'].unstack()
# 3. (可选)重置索引,把userid从索引变回普通列
df = df.reset_index()

print(df)

输出结果

运行后得到的输出和你预期一致,空值位置默认显示NaN(对应你提到的null):

acc_seq userid account 1 account 2 account 3
0         001       123       456       NaN
1         002       789       123       467

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 08:36:05