【问题标题】:Index matching with multiple columns in python与python中的多列匹配的索引
【发布时间】:2017-03-10 11:26:23
【问题描述】:

我有两个大小不同的熊猫数据框。两个数据框看起来像

df1 = 

x   y   data
1   2   5
2   2   7
5   3   9
3   5   2

另一个数据框看起来像:

df2 =

x   y   value
5   3   7
1   2   4
3   5   2
7   1   4
4   6   5
2   2   1
7   5   8

我正在尝试合并这两个数据框,以便最终数据框具有相同的 x 和 y 组合以及各自的值。我期待这种格式的最终​​数据框:

x   y   data    value
1   2   5      4
2   2   7      1
5   3   9      7
3   5   2      2

我尝试了这段代码,但没有得到预期的结果。

dfB.set_index('x').loc[dfA.x].reset_index()

【问题讨论】:

    标签: python pandas numpy dataframe merge


    【解决方案1】:

    使用merge,默认使用how='inner',因此可以省略,如果只加入相同的列参数on也可以省略:

    print (pd.merge(df1,df2))
       x  y  data  value
    0  1  2     5      4
    1  2  2     7      1
    2  5  3     9      7
    3  3  5     2      2
    

    如果在实际数据中有多个相同的列名,请使用:

    print (pd.merge(df1,df2, on=['x','y']))
    
       x  y  data  value
    0  1  2     5      4
    1  2  2     7      1
    2  5  3     9      7
    3  3  5     2      2
    

    【讨论】:

      【解决方案2】:
      df1.merge(df2,by='x')
      

      这样就可以了

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-24
        • 1970-01-01
        • 2020-08-30
        • 1970-01-01
        • 2019-12-28
        • 2018-12-24
        • 2021-06-13
        • 2017-04-20
        相关资源
        最近更新 更多