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

如何用Pandas将DataFrame转为Date为索引、ID为列的格式?

DataFrame行列重塑问题及解决方案

问题描述

现有如下DataFrame:

Date             Rez          ID
                            
2023-07-03       5.95          1
2023-07-03       49.9          3
2023-07-03      33.17         54
2022-11-17       5.38          1
2022-11-17       44.4          3
2022-09-02      23.39         54
2022-09-02        5.6          1
2022-09-02       46.5          3
2021-10-19       5.34          1
2021-10-19       44.6          3
2020-12-11       5.38          1
2020-12-11         44          3
2019-04-25       5.84          1
2019-04-25        1.7        205

需要将其转换为以Date为索引、ID值作为列,缺失值填充为NaN的形式,预期结果如下:

1            3          54        205
Date                                  
2023-07-03       5.95         49.9       33.17      NaN        
2022-11-17       5.38         44.4       NaN        NaN        
2022-09-02        5.6         46.5       23.39      NaN        
2021-10-19       5.34         44.6       NaN        NaN        
2020-12-11       5.38         44         NaN        NaN        
2019-04-25       5.84         NaN        NaN        1.7

尝试了df_sample.groupby(['ID','Date'])['Rez'].unique().to_frame().transpose()未得到预期结果,求正确实现方法。

正确实现方案

方法1:使用pivot方法

pivot是处理此类行列转换的直接方式,适合无重复(Date, ID)组合的场景:

result = df_sample.pivot(index='Date', columns='ID', values='Rez')

方法2:使用pivot_table处理潜在重复值

如果数据中存在同一(Date, ID)对应多个Rez值的情况,可以用pivot_table配合聚合函数(比如取第一个值、均值等):

# 以取第一个值为例,也可替换为'mean'/'sum'等聚合函数
result = df_sample.pivot_table(index='Date', columns='ID', values='Rez', aggfunc='first')

两种方法都会自动将不存在的(Date, ID)组合填充为NaN,完全匹配预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:15:24