交叉数据帧python,保留一个dataframe列

时间:2017-01-31 19:33:55

标签: python sql dataframe inner-join

我想加入2个数据帧,以便结果将是关键列上两个数据集的交集。 通过这样做:

result = pd.merge(df1,df2,on='key', how='inner')

我会得到我需要的东西,但是有额外的df2列。我只想在结果中使用df1列。 (我不想在以后删除它们。)

有什么想法吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

这是一个通用解决方案,适用于一个和多个键(连接)列:

<强>设定:

In [28]: a = pd.DataFrame({'a':[1,2,3,4], 'b':[10,20,30,40], 'c':list('abcd')})

In [29]: b = pd.DataFrame({'a':[3,4,5,6], 'b':[30,41,51,61], 'c':list('efgh')})

In [30]: a
Out[30]:
   a   b  c
0  1  10  a
1  2  20  b
2  3  30  c
3  4  40  d

In [31]: b
Out[31]:
   a   b  c
0  3  30  e
1  4  41  f
2  5  51  g
3  6  61  h

多个加入密钥:

In [32]: join_cols = ['a','b']

In [33]: a.merge(b[join_cols], on=join_cols)
Out[33]:
   a   b  c
0  3  30  c

单一加入密钥:

In [34]: join_cols = ['a']

In [35]: a.merge(b[join_cols], on=join_cols)
Out[35]:
   a   b  c
0  3  30  c
1  4  40  d