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

如何在Pandas中无需分组实现含重复值的DataFrame转置?

DataFrame转置格式错误排查与解决

原始数据格式

ref      text   id     
a        zz     12eia
a        yy     radf02
b        aa     a8adf
b        bb     2022a

需求目标

将数据转换为以下格式:以ref列的值作为列名,text列的值作为对应列的内容,忽略id列

a     b     
zz    aa
yy    bb 

你的错误代码

df_rotated = df.pivot_table(index='ref', values='text', columns='id', aggfunc='first')

错误原因

  1. 行列对应关系完全搞反:你把ref设为行索引,id设为列名,和需求的ref做列名的要求完全相悖
  2. pivot_table的聚合逻辑导致数据折叠:这里不需要按id分组聚合,指定columns='id'会把不同id的内容拆成列,最终只会保留每个ref下的第一条数据,自然出现折叠

正确解决方法

方法一:分组转置法

import pandas as pd

# 按ref分组收集text,再转置成目标格式
df_rotated = df.groupby('ref')['text'].apply(list).apply(pd.Series).T

方法二:临时索引透视法

import pandas as pd

# 给每个ref组添加组内序号作为统一行索引
df['temp_idx'] = df.groupby('ref').cumcount()
# 透视生成目标格式,最后移除临时索引
df_rotated = df.pivot(index='temp_idx', columns='ref', values='text').reset_index(drop=True)

两种方法都能生成你需要的目标格式DataFrame,可根据习惯选择使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:45:25