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

Python字典中基于键前两个值合并DataFrame的方法

解决方案:按字典键的前两个元素合并DataFrame

嘿,这个需求挺典型的,我来分享一个简单直接的实现方式,完全贴合你的预期结果:

核心思路

我们需要按原字典键的前两个元素分组,把同一组下的所有DataFrame按列合并(也就是横向拼接),最后生成以这两个元素为新键的字典。

完整代码实现

import pandas as pd

# 你的原始字典
dct = { (1/1 , 2/1, 'AAPL') : pd.DataFrame({'aapl' : [1,2,3]}), 
        (1/1, 2/1 , 'XOM') : pd.DataFrame({'xom' : [4,5,6]}) }

# 初始化一个空字典用于存放分组后的结果
merged_dct = {}

# 第一步:按键的前两个元素分组收集DataFrame
for key, df in dct.items():
    # 提取键的前两个元素作为新的分组键
    group_key = key[:2]
    # 如果分组键不存在,就创建一个空列表来存对应的DataFrame
    if group_key not in merged_dct:
        merged_dct[group_key] = []
    # 将当前DataFrame添加到对应分组的列表中
    merged_dct[group_key].append(df)

# 第二步:合并每个分组内的DataFrame
for group in merged_dct:
    # 按列合并(axis=1),如果你的DataFrame行索引不一致,可以考虑用join/merge调整
    merged_dct[group] = pd.concat(merged_dct[group], axis=1)

# 验证结果
print(merged_dct[(1.0, 2.0)])

代码解释

  • 第一步遍历原始字典,把每个DataFrame按键[:2](前两个元素)归类到对应的分组里;
  • 第二步用pd.concat(axis=1)把同一分组的DataFrame横向拼接,正好得到你想要的多列DataFrame;
  • 如果你的场景中不同DataFrame的行索引不匹配,可以把pd.concat换成pd.merge并指定how='outer'之类的参数来适配。

运行后你会得到预期的结果:

aapl  xom
0     1    4
1     2    5
2     3    6

内容的提问来源于stack exchange,提问作者thomas.mac

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:21:04