这似乎是一个愚蠢的问题,但这已经困扰了我一段时间.
DF1:
imp_type value
1 abc
2 def
3 ghi
Run Code Online (Sandbox Code Playgroud)
DF2:
id value2
1 123
2 345
3 567
Run Code Online (Sandbox Code Playgroud)
Merginge 2 df:
df1.merge(df2, left_on='imp_type',right_on='id')
Run Code Online (Sandbox Code Playgroud)
收益率:
imp_type value id value2
1 abc 1 123
2 def 2 345
3 ghi 3 567
Run Code Online (Sandbox Code Playgroud)
然后我需要删除id
列,因为它基本上是imp_type列的副本.为什么默认情况下合并会在两个数据帧之间拉入连接键?如果你不想拉入连接键,我认为至少应该设置为False的参数.有没有这样的东西或者我做错了什么?
我同意如果删除其中一个列会很好.当然,还有一个问题是如何命名剩余的列.
无论如何,这是一个解决方法.只需重命名其中一列,以便连接的列具有相同的名称:
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
Run Code Online (Sandbox Code Playgroud)
重命名列有点痛苦,特别是(正如DSM所指出的)相比.drop('id', 1)
.但是,如果您可以从一开始就安排联接列具有相同的名称,那么df1.merge(df2, on='imp_type')
这将是最简单的.
归档时间: |
|
查看次数: |
4612 次 |
最近记录: |