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

如何在Pandas中将值统计结果转换为独立列

问题:将分组统计结果转换为指定宽表结构

原始DataFrame结构:

date          output
2023-01-25    A
2023-01-25    B
2023-01-25    B
2023-01-25    C
2023-01-25    C
2023-01-25    A
2023-01-25    B
     ...
2023-01-26    B
2023-01-26    C
2023-01-26    B
2023-01-26    B
2023-01-26    A
2023-01-26    C
2023-01-26    B
     ...
2023-01-27    C
2023-01-27    A
2023-01-27    A
2023-01-27    C
2023-01-27    B
2023-01-27    B

使用df.groupby('date').output.value_counts()后得到的分层索引结果:

date        output
2023-01-25  A             52
            B             28
            C             42
2023-01-26  A             47
            B             32
            C             36
2023-01-27  A             23
            B             67
            C             35

需要转换为如下结构的宽表:

date        A              B              C
2023-01-25  52             28             42
2023-01-26  47             32             36
2023-01-27  23             67             35

解决方案

有两种简洁的方法可以实现转换:

方法1:基于已有分组结果展开

在value_counts()后调用unstack(),直接将分层索引中的output维度展开为列名:

result = df.groupby('date').output.value_counts().unstack()

如果存在某日期缺少A/B/C类别的情况,结果会出现NaN,可以用fill_value参数直接填充为0:

result = df.groupby('date').output.value_counts().unstack(fill_value=0)

方法2:一步完成统计与转换

使用pivot_table直接完成分组统计和格式转换,无需先执行groupby:

result = df.pivot_table(index='date', columns='output', aggfunc='size', fill_value=0)

其中aggfunc='size'用于统计每个(date, output)组合的行数,fill_value=0同样用来处理缺失类别的场景。

两种方法最终都会生成你需要的目标宽表结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:30:41