如何将Pandas GroupBy生成的行多层索引转换为列多层索引?
嘿,这事儿用Pandas的unstack()方法就能轻松搞定!
你现在的DataFrame是把year和month作为行的多层索引,要转成以month为行索引、year为列上层索引的结构,核心就是把行索引里的year层级“转移”到列索引上。
假设你的分组后数据框名叫grouped_df,直接执行下面的代码就行:
# 将year从行索引的外层,转换为列的上层索引 result_df = grouped_df.unstack(level='year')
执行完之后,你得到的result_df就是你想要的结构:列的第一层是年份(2014、2015),每个年份下面对应avg、total、unique三个子列;行索引则是month,完美匹配你的目标格式。
举个实际输出的例子,就是这样的:
2014 2015 avg total unique avg total unique month 1 241.0 64.668050 15585.00 57.0 54.562982 3110.09 2 358.0 65.197877 23340.84 140.0 76.007143 10641.00 3 347.0 60.336715 20936.84 85.0 79.929412 6794.00 4 179.0 61.071788 10931.85 89.0 70.000000 6230.00
如果你的行索引层级顺序不一样(比如month是外层),那只要调整unstack()里的level参数就行——本质就是指定要把哪个行索引层级转成列索引。
内容的提问来源于stack exchange,提问作者chambersisms
相关产品推荐
相关产品推荐

