如何合并pandas DataFrame中存在重复值的多级列索引层级?
多级列索引重复一级层级合并方案
现有构造的DF二级列索引中存在重复的一级层级origin,可通过以下代码合并同一一级层级下的所有子列,消除重复层级:
方法1:简洁分组转置实现
DF = DF.T.groupby(level=0).apply(lambda x: x.reset_index(level=0, drop=True)).T
执行逻辑:先将DataFrame转置,使原多级列索引变为行索引,按一级索引(level=0)分组后删除每组的重复一级索引,再转置回原结构即可自动合并同一一级层级下的所有二级子列。
方法2:手动重构列索引实现(逻辑更直观)
from collections import defaultdict import pandas as pd # 按一级列索引归类所有二级子列 col_mapping = defaultdict(list) for l1, l2 in DF.columns: col_mapping[l1].append(l2) # 构建新的无重复一级层级的多级列索引 new_cols = pd.MultiIndex.from_tuples( [(l1, l2) for l1 in col_mapping for l2 in col_mapping[l1]] ) # 按新索引重排DataFrame DF = DF.reindex(new_cols, axis=1)
处理完成后,origin一级层级下将包含a、b、e、f四个二级子列,destination层级保持不变,符合预期效果。
内容的提问来源于stack exchange,提问作者Panhypersebsatos
相关产品推荐
相关产品推荐

