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
相关产品推荐
相关产品推荐

