【问题标题】:Pandas: Nested merge熊猫:嵌套合并
【发布时间】:2015-07-15 12:35:47
【问题描述】:

我需要将三个数据框合并在一起。基本上,我有一个数据框df1,它为我提供了特定部门定义(sector)和年份的就业机会。然后,我有第二个数据框df2,它为每个部门和年份提供了一个特征foo,但这里的部门变量是sector2

最后,我有一个匹配 sectorsector2 的数据框。这是一个 n:1 关系:一个 sector2 可以匹配多个 sector

由于这些数据帧非常大,我正在寻找一种最有效的方法来合并这些数据帧在年份和扇区中,同时尊重扇区-扇区 2 链接。我不需要establishmentsfoo 为空的行。

由于 n:1 匹配,我的标准合并方式已经中断 - 我得到了

NotImplementedError: Index._join_level on non-unique index is not implemented

我应该如何解决这个问题?

这是我的数据框示例:

  • df1

                 establishments  employment
    year sector                             
    2005  22111               5        1853
          22112               7          70
          44511               4         264
          45211               4         637
          45299               4          80
    
  • df2

                      foo
    Year sector2       
    2005 1111A0     19973
    2005 1111A0     17241
    2005 1111A0     13259
    2005 1111A0     13646
    2005 1111A0     13721
    
  • 我的桥

                    description  sector
    sector2                        
     1111A0     Oilseed farming   11111
     1111A0     Oilseed farming   11112
     1111B0       Grain farming   11113
     1111B0       Grain farming   11114
     1111B0       Grain farming   11115
    

【问题讨论】:

    标签: python pandas merge


    【解决方案1】:

    您应该在每个数据框上创建一个reset_index,然后合并它们。 在reset_index 之后,您将拥有唯一索引并能够执行合并。

    【讨论】:

    • 但这不会沿着(新整数)索引合并吗?这如何尊重我的部门,部门 2 桥?
    • 好吧,假设您想将df2my bridge 合并。单个sector2 可以匹配多个sector。但是fooyear 呢?我们和 pandas 如何决定 sector 属于哪个 foo
    猜你喜欢
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2023-03-06
    相关资源
    最近更新 更多