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

如何使用Pandas将含DataFrame值的字典转换为层级结构DataFrame

问题:合并多个DataFrame为指定层级结构

现有两个示例DataFrame:
df1:

Idx    A    B    C
0    1  1.1  1.2  1.3
1    2  1.4  1.5  1.4

df2:

Idx    A    B    C
0    1  2.1  2.2  2.3
1    2  2.4  2.5  2.4

期望合并为带层级索引的DataFrame,结构如下:

Idx    A    B    C
R1 0    1  1.1  1.2  1.3
   1    2  1.4  1.5  1.4
R2 0    1  2.1  2.2  2.3
   1    2  2.4  2.5  2.4

尝试用字典存储后转成DataFrame,代码如下:

dict_val = {}
dict_val['R1'] = df1
dict_val['R2'] = df2
df_join = pd.DataFrame.from_dict(dict_val)

但报错:ValueError: Must pass 2-d input.


错误原因

pd.DataFrame.from_dict()要求字典中的值是一维或二维的可迭代对象(比如列表、数组),但你存入的是完整的DataFrame(本身是二维结构),不符合输入要求,因此抛出错误。

解决方案

使用pd.concat()工具合并多个DataFrame,通过keys参数可以快速给每个子DataFrame添加顶层索引,实现目标层级结构。

完整代码示例

import pandas as pd

# 构造示例DataFrame
df1 = pd.DataFrame({
    'Idx': [1, 2],
    'A': [1.1, 1.4],
    'B': [1.2, 1.5],
    'C': [1.3, 1.4]
})

df2 = pd.DataFrame({
    'Idx': [1, 2],
    'A': [2.1, 2.4],
    'B': [2.2, 2.5],
    'C': [2.3, 2.4]
})

# 合并并添加层级索引
result = pd.concat([df1, df2], keys=['R1', 'R2'])

# 打印结果
print(result)

说明

  • keys=['R1', 'R2']会自动为每个子DataFrame生成顶层行索引,形成(Group, 原索引)的多层索引结构。
  • 合并后的DataFrame保留了原DataFrame的所有列,输出格式与你期望的结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:57:34