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

如何调整Pandas pivot_table语法实现行转列并合并相同索引?

解决DataFrame透视后无法合并行的问题

问题分析

你的代码未合并相同date和id的行,核心原因大概率是date或id列的数据类型不一致(比如id混合了数值与字符串、date存在格式差异),或者未正确处理透视后的索引。

可行解决方案

方案1:使用pivot方法(推荐)

由于你的数据中每个(date, id, desc)组合对应唯一的amount值,无需聚合操作,直接用pivot更高效:

import pandas as pd

# 执行透视
df_pivoted = df.pivot(index=['date', 'id'], columns='desc', values='amount').reset_index()
# 移除列索引的名称(避免desc作为列名前缀)
df_pivoted.columns.name = None

方案2:修正pivot_table用法

如果坚持使用pivot_table,需先统一数据类型,再确保聚合逻辑正确:

import pandas as pd

# 统一数据类型:date转为datetime,id转为字符串(保留前导零)
df['date'] = pd.to_datetime(df['date'])
df['id'] = df['id'].astype(str)

# 执行透视表
df_pivoted = df.pivot_table(
    index=['date', 'id'],
    columns='desc',
    values='amount',
    aggfunc='first'  # 因每个组合唯一,sum/max等聚合函数效果一致
).reset_index()
df_pivoted.columns.name = None

关键注意点

  • 必须确保date和id列的数据类型完全统一,否则分组时会将看似相同的内容判定为不同组
  • 透视后记得用reset_index()将多级索引转为普通列,同时移除列索引名称让结果符合预期格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:32:45