Pandas合并列,但不是“关键”列

时间:2014-03-05 20:14:21

标签: python pandas

这似乎是一个愚蠢的问题,但这已经困扰了我一段时间。

DF1:

imp_type    value
1           abc
2           def
3           ghi

DF2:

id          value2
1           123
2           345
3           567

Merginge 2 df:

df1.merge(df2, left_on='imp_type',right_on='id')

的产率:

imp_type    value    id    value2
1           abc      1     123
2           def      2     345
3           ghi      3     567

然后我需要删除id列,因为它基本上是imp_type列的副本。为什么默认情况下合并会在两个数据帧之间拉入连接键?如果你不想拉入连接键,我认为至少应该设置为False的参数。有没有这样的东西或者我做错了什么?

1 个答案:

答案 0 :(得分:6)

我同意如果其中一个专栏被删除会很好。当然,还有一个问题是如何命名剩余的列。

无论如何,这是一个解决方法。只需重命名其中一列,使连接的列具有相同的名称:

In [23]: df1 = pd.DataFrame({'imp_type':[1,2,3], 'value':['abc','def','ghi']})

In [27]: df2 = pd.DataFrame({'id':[1,2,3], 'value2':[123,345,567]})

In [28]: df2.columns = ['imp_type','value2']

In [29]: df1.merge(df2, on='imp_type')
Out[29]: 
   imp_type value  value2
0         1   abc     123
1         2   def     345
2         3   ghi     567

.drop('id', 1)相比,重命名列有点痛苦,特别是(正如DSM指出的那样)。但是,如果您可以从一开始就安排联接列具有相同的名称,那么df1.merge(df2, on='imp_type')将是最简单的。