索引与python中的多列匹配

时间:2016-10-27 16:58:59

标签: python pandas numpy dataframe merge

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

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()

2 个答案:

答案 0 :(得分:4)

默认使用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

答案 1 :(得分:1)

df1.merge(df2,by='x')

这样做