【问题标题】:pandas merge with duplicate values in index熊猫与索引中的重复值合并
【发布时间】:2018-06-17 15:40:22
【问题描述】:

你好,

我有以下两个数据框(df1、df2),如果我合并它们(内连接),我会得到以下数据框:

In [85]: df1 = pd.DataFrame({'value' : [10, 11, 14, 16]}, index=[1, 2, 3, 3]); df1                 
Out[85]:             
   value             
1     10             
2     11             
3     14             
3     16             

In [86]: df2 = pd.DataFrame({'value' : [11, 15, 16]}, index=[1, 3, 3]); df2                        
Out[86]:             
   value             
1     11             
3     15             
3     16             

In [87]: pd.merge(df1, df2, how='inner', left_index=True, right_index=True)                        
Out[87]:             
   value_x  value_y  
1       10       11  
3       14       15  
3       14       16  
3       16       15  
3       16       16  

而不是这个,我想要以下数据框

    value_x  value_y 
1     10      11     
3     14      15     
3     16      16     

基本上在重复行的情况下,不要将m * n 合并为当前发生的方式。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我们需要一个新的段落 key ,通过使用 groupby + cumcount 获得

    pd.merge(df1.assign(key=df1.groupby(level=0).cumcount()).reset_index(),
        df2.assign(key=df2.groupby(level=0).cumcount()).reset_index(),
             how='inner',on=['index','key']).\
                 drop('key',1).set_index('index')
    Out[25]: 
           value_x  value_y
    index                  
    1           10       11
    3           14       15
    3           16       16
    

    【讨论】:

      猜你喜欢
      • 2020-04-05
      • 2021-07-31
      • 2021-09-01
      • 2018-02-03
      • 2012-12-18
      • 2016-08-01
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      相关资源
      最近更新 更多