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

如何反转pd.melt去重结果,实现pandas DataFrame长表转宽表

解决方案

报错原因

pivot_table默认会对同分组的数据执行聚合运算,要求values字段为数值类型,你需要保留同一个event下Table和Cell的全部匹配组合,不需要聚合操作,因此不适用pivot_table。

实现方法

方法1:拆分关联法(适用type数量少的场景,代码最简单)

先分别提取Table和Cell两类数据,再按event字段做关联即可得到目标结果:

# 提取Table类型数据
table_df = df[df['type'] == 'Table'].rename(columns={'entity': 'Table'})[['event', 'Table']]
# 提取Cell类型数据
cell_df = df[df['type'] == 'Cell'].rename(columns={'entity': 'Cell'})[['event', 'Cell']]
# 按event关联得到结果
result = table_df.merge(cell_df, on='event')

方法2:辅助列pivot法(适用type数量多的场景,扩展性强)

先给每个event下同类型的行添加组内序号作为辅助索引,再做pivot即可避免聚合报错:

# 新增辅助列:记录同一个event、同一个type下的行序号
df['aux_idx'] = df.groupby(['event', 'type']).cumcount()
# pivot时指定双索引避免聚合,最后删除辅助列即可
result = df.pivot(index=['event', 'aux_idx'], columns='type', values='entity')\
           .reset_index()\
           .drop(columns='aux_idx')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:06