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

如何将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:35:20