这似乎是一个愚蠢的问题,但这已经困扰了我一段时间。
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的参数。有没有这样的东西或者我做错了什么?
答案 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')
将是最简单的。