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

如何调整Pandas合并后DataFrame的列MultiIndex层级顺序?

调整MultiIndex列层级顺序的解决方案

问题场景

你已通过pd.concat生成列层级为**[数据源标识, 用户名]的MultiIndex DataFrame,需要将列层级顺序调整为[用户名, 数据源标识]**,同时让同一用户的数据源列相邻排列。

原始代码

import pandas as pd

d1 = {'john': [10, 11], 'adam': [20,21]}
d2 = {'john': [1,12], 'adam': [3,34]}
test_df1= pd.DataFrame(data=d1)
test_df2= pd.DataFrame(data=d2)

# 生成当前列层级为[数据源标识, 用户名]的DataFrame
current_df = pd.concat([test_df1, test_df2], keys=['test_df1','test_df2'], axis=1)

实现方案

通过swaplevel调换列层级,再用sort_index按新层级排序,即可得到目标结果:

# 调换列MultiIndex层级,并按用户名排序列
needed_df = current_df.swaplevel(axis=1).sort_index(axis=1, level=0)

# 可选:将用户名转为首字母大写(与示例格式完全匹配)
needed_df.columns = needed_df.columns.set_levels(needed_df.columns.levels[0].str.capitalize(), level=0)

代码说明

  • swaplevel(axis=1):直接调换列MultiIndex的两个层级,将原顺序[数据源标识, 用户名]改为[用户名, 数据源标识]
  • sort_index(axis=1, level=0):按新的第一层级(用户名)对列排序,确保同一用户的两个数据源列相邻
  • 最后一行代码用于将小写的用户名转为首字母大写,完全匹配你给出的示例格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:05:27