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

如何基于含重复值的DATE列实现Pandas DataFrame长表转宽表?

基于含重复值的DATE列实现Pandas长表转宽表

完全可以实现,你的场景中count(即DATE列)与A列的组合是唯一的,直接用pivot或pivot_table就能完成转换,以下是具体实现方法:

步骤1:构造示例数据

import pandas as pd

# 还原你提供的长表数据
df = pd.DataFrame({
    'count': ['2023-01-01', '2023-02-01', '2023-03-01', '2023-04-01',
              '2023-01-01', '2023-02-01', '2023-03-01', '2023-01-01'],
    'A': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'c'],
    'B': [0, 11, 2, 11, 10, 10, 14, 7]
})

方法1:使用pivot(适合无重复组合的场景)

pivot要求index和columns的组合唯一,你的数据刚好满足这个条件,直接调用即可:

wide_df = df.pivot(index='count', columns='A', values='B')
# 调整表头和索引的名称,匹配你想要的格式
wide_df.columns.name = 'A'
wide_df.index.name = 'count'

方法2:使用pivot_table(兼容存在重复组合的场景)

如果后续你的数据中出现count+A的重复组合,可以用pivot_table指定聚合逻辑(比如取第一个值、均值、求和等),同样能得到目标格式:

# 这里用aggfunc='first'表示取重复组合中的第一个值,可根据需求替换为'mean'/'sum'等
wide_df = df.pivot_table(index='count', columns='A', values='B', aggfunc='first')
wide_df.columns.name = 'A'
wide_df.index.name = 'count'

转换后的结果

两种方法都会得到你期望的宽表结构:

A            a     b    c
count
2023-01-01   0.0  10.0  7.0
2023-02-01  11.0  10.0  NaN
2023-03-01   2.0  14.0  NaN
2023-04-01  11.0   NaN  NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:42:19