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

如何在Python Pandas中将分组值转置为列?(附数据示例)

Pandas 长表转宽表实现方法

你可以用Pandas的pivot()方法直接实现这个转换,步骤如下:

1. 准备示例数据

先还原你的原始DataFrame:

import pandas as pd

data = {
    'ID': [22, 22, 22, 33, 33, 44, 44],
    'Product': ['product1', 'product2', 'product3', 'product2', 'product3', 'product1', 'product4'],
    'Amount': ['$10', '$20', '$30', '$4', '$5', '$78', '$90']
}
df = pd.DataFrame(data)

2. 使用pivot()转换格式

直接调用pivot(),指定索引、列值和填充值:

pivoted_df = df.pivot(index='ID', columns='Product', values='Amount').reset_index()
# 移除默认的列层级名称
pivoted_df.columns.name = None

执行后得到的结果接近目标格式:

ID product1 product2 product3 product4
0  22      $10      $20      $30      NaN
1  33      NaN       $4       $5      NaN
2  44      $78      NaN      NaN      $90

如果需要把空值NaN替换为空字符串,匹配你想要的输出样式,再加一步:

pivoted_df = pivoted_df.fillna('')

最终结果:

ID product1 product2 product3 product4
0  22      $10      $20      $30         
1  33                $4       $5         
2  44      $78                        $90

特殊情况处理

如果你的数据中存在同一个ID+Product的重复行,pivot()会报错,这时可以改用pivot_table()并指定聚合方式(比如取第一个值):

pivoted_df = df.pivot_table(index='ID', columns='Product', values='Amount', aggfunc='first').reset_index()
pivoted_df.columns.name = None
pivoted_df = pivoted_df.fillna('')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:36:14