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

如何转换Pandas DataFrame以制作两类堆叠柱状图

问题描述

通过以下代码得到了如下Pandas DataFrame:

plt_df = df.groupby(['Aufnahme_periode','Preisgruppe','Land']).count()

对应的DataFrame数据:

INDEXAufnahme_periodePreisgruppeLandAnzahl
13442021-11-011NL2
13452021-12-011AT8
13462021-12-011BE1
13472021-12-011CH1
13482021-12-011DE154
13492021-12-011GB3
13502021-12-011JP1
13512021-12-011NL2
13522022-01-011AT1
13532022-01-011DE19
13542022-01-011IT1
13552022-01-012CH1
13562022-01-012DE1
13572022-02-011DE16
13582022-02-011FR1
13592022-02-012CH1
13602022-03-011DE23

需要转换DataFrame格式以制作两类堆叠柱状图:

  • 按Preisgruppe分组的月度堆叠图:以月份为行,组1、组2为列
  • 按Land分组的月度堆叠图:以月份为行,各个国家为列

已掌握绘图方法,仅需完成DataFrame格式转换。

解决方案

1. 转换为按Preisgruppe分组的月度统计格式

使用pivot_table聚合数据,将月份设为索引,价格组设为列,对Anzahl求和,缺失值填充为0:

preisgruppe_pivot = plt_df.pivot_table(
    index='Aufnahme_periode',
    columns='Preisgruppe',
    values='Anzahl',
    aggfunc='sum',
    fill_value=0
)

# 可选:重命名列让标识更清晰
preisgruppe_pivot.columns = [f'Preisgruppe_{col}' for col in preisgruppe_pivot.columns]

转换后结构示例:

Aufnahme_periodePreisgruppe_1Preisgruppe_2
2021-11-0120
2021-12-011700
2022-01-01212

2. 转换为按Land分组的月度统计格式

同样用pivot_table,将月份设为索引,国家设为列,对Anzahl求和,缺失值填充为0:

land_pivot = plt_df.pivot_table(
    index='Aufnahme_periode',
    columns='Land',
    values='Anzahl',
    aggfunc='sum',
    fill_value=0
)

转换后结构示例:

Aufnahme_periodeATBECHDEFRGBITJPNL
2021-11-01000000002
2021-12-0181115403012

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:31:02