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

Pandas中是否支持在其他列内部创建嵌套子列?

核心结论
  • 你的猜想不成立,Pandas 原生支持你需要的「父级列聚合子级列」的嵌套结构,本质是列维度的多层索引(MultiIndex),你之前没得到预期结果是字典构造写法不符合解析规则,不是功能无法实现。
  • 你需要的目标结构为:一级列名固定为Investments,二级列名分别为Jhon、Camile,两个子列独立存储对应数据。
原有写法的错误原因
  • 第一种test字典的嵌套逻辑是外层键为用户名、内层键为Investments,Pandas 解析这类嵌套字典生成列时,会默认外层键为一级列名、内层键为二级列名,最终生成Jhon/Investments、Camile/Investments两个并列列,层级顺序和需求完全相反。另外你写的Camile对应值列表长度和Jhon不一致,还会触发长度不匹配的报错。
  • 第二种test2字典虽然外层键为Investments,但直接传入内层字典的写法,会被Pandas识别为单元格的对象值,不会自动解析为二级列结构,同样无法得到目标结果。
正确实现方式

两种最简便的写法如下:

  1. 直接通过元组形式的列键构造
    把多层级的列名写成元组,作为DataFrame构造方法的字典键即可,Pandas会自动识别生成MultiIndex列:
    import pandas as pd
    
    df = pd.DataFrame({
        ('Investments', 'Jhon'): [100, 200, 300],
        ('Investments', 'Camile'): [200, 300, -150]
    })
    
  2. 显式构造MultiIndex列对象
    如果后续需要扩展更多父级列,可以提前定义多层列索引再传入数据:
    # 对齐的二维数据
    data = [
        [100, 200],
        [200, 300],
        [300, -150]
    ]
    # 定义两层列结构
    columns = pd.MultiIndex.from_tuples([
        ('Investments', 'Jhon'),
        ('Investments', 'Camile')
    ])
    df = pd.DataFrame(data, columns=columns)
    

两种写法输出的结果完全一致,结构如下:

Investments     
         Jhon Camile
0         100    200
1         200    300
2         300   -150
常用操作提示
  • 筛选单个子列时,传入层级元组即可:df[('Investments', 'Jhon')]
  • 所有子列的数值长度必须对齐,长度不一致时需要提前用pd.NA或None填充缺失位,否则会触发构造报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.17 16:16:01