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

Pandas:如何对多级列DataFrame按日期分组求和并转换格式

问题:计算多级列索引DataFrame的列总和并转换格式

我有一个结构如下的Pandas DataFrame:

2023-12-31          2024-01-31
   myvalue1   myvalue2  myvalue1    myvalue2
a   2          6          2           6
b   3          7          3           7
c   4          8          4           8

可通过以下代码创建:

import pandas as pd

df = pd.DataFrame(index=['a', 'b', 'c'], data=
                   {'myvalue1':[2,3, 4], 'myvalue2':[6,7,8]})
      .reindex(['myvalue1', 'myvalue2'] * 2, axis=1) 
        .set_axis(pd.MultiIndex.from_product([['2023-12-31','2024-01-31'], ['myvalue1', 'myvalue2']]), axis=1)

需要计算各列的总和并转换为如下格式:

myvalue1      myvalue2  
2023-12-31         9           21
2024-01-31         9           21

注:此示例中列对是重复的。


解决方案

方法1:使用sum()的level参数

直接针对列的第一级索引(日期维度)求和,指定level=0即可自动整理出目标结构:

result = df.sum(axis=0, level=0)

方法2:使用groupby()按列索引分组求和

对列的第一级索引分组后执行求和操作,输出结果与方法1完全一致:

result = df.groupby(level=0, axis=1).sum()

执行上述任意一种方法后,都会得到符合要求的结果:

myvalue1  myvalue2
2023-12-31         9        21
2024-01-31         9        21

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:42:19