如何将DataFrame底层列元组拆分为新增层级?
解决方案
1. 构造示例数据(可跳过,直接用你的DataFrame)
先模拟你提供的原始DataFrame,方便验证代码:
import pandas as pd data = [[48, 28, 585, 4, 233, 44], [11, 434, 23, 854, 32, 10]] # 原始列是二元组 original_cols = [('A', 'Cat'), ('B', 'Dog'), ('B', 'Bird'), ('B', 'Frog'), ('HH', 'Lion'), ('HH', 'Tiger')] df = pd.DataFrame(data, columns=original_cols)
2. 转换为三层列索引
核心是把原始的二元组列名,补充顶层的Category后转换成三元组,再生成多层索引:
# 遍历原始列元组,给每个元组添加顶层的"Category" new_col_tuples = [('Category', first_part, second_part) for first_part, second_part in df.columns] # 生成三层MultiIndex df.columns = pd.MultiIndex.from_tuples( new_col_tuples, # 可选:给各层索引命名,方便后续操作 names=['顶层索引', '中间层索引', '底层索引'] )
3. 验证结果
运行print(df)会得到你期望的结构:
顶层索引 Category 中间层索引 A B B B HH HH 底层索引 Cat Dog Bird Frog Lion Tiger 0 48 28 585 4 233 44 1 11 434 23 854 32 10
特殊情况处理
若你的原始列不是二元组而是字符串格式(比如"(A,Cat)"),可以先拆分字符串:
# 处理字符串格式的列名 original_cols = ["(A,Cat)", "(B,Dog)"] parsed_cols = [tuple(col.strip('()').split(',')) for col in original_cols] df.columns = parsed_cols # 再执行上面的三层索引转换步骤
内容的提问来源于stack exchange,提问作者dmd7
相关产品推荐
相关产品推荐

