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

Pandas透视时重复值不聚合生成新行的实现方法咨询

你遇到的问题是直接使用pivot时仅用id作为行索引,同id同group下的多值会触发默认聚合运算,只要先给同id同group下的每条记录添加唯一序号作为额外行索引即可避免聚合,实现你要的效果。

具体实现代码如下:

import pandas as pd
import numpy as np

df = pd.DataFrame({'id': ['i1','i1','i1','i2','i2','i2','i2','i2','i3','i3'],
    'group': ['group1','group1','group2','group3','group1','group2','group2','group3','group1','group2'],
    'choice':[12,11,12,14,11,19,9,7,8,9]})

# 为id+group分组内的每条记录生成累计序号,用来区分同组下的多条数据
df['row_num'] = df.groupby(['id', 'group']).cumcount()
# 透视时同时用id和row_num作为行索引,不会触发聚合
result = df.pivot(index=['id', 'row_num'], columns='group', values='choice').reset_index()
# 移除多余的序号列,清除columns的索引名
result = result.drop(columns='row_num').rename_axis(columns=None)

运行后输出的result就是你需要的目标结构:

id  group1  group2  group3
0  i1    12.0    12.0     NaN
1  i1    11.0     NaN     NaN
2  i2    11.0    19.0    14.0
3  i2     NaN     9.0     7.0
4  i3     8.0     9.0     NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:09