这似乎是一个愚蠢的问题,但这已经困扰我一段时间了。
df1:
imp_type value
1 abc
2 def
3 ghi
df2:
id value2
1 123
2 345
3 567
合并 2 个 df:
df1.merge(df2, left_on='imp_type',right_on='id')
yields:
imp_type value id value2
1 abc 1 123
2 def 2 345
3 ghi 3 567
然后我需要放弃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
重命名列有点麻烦,特别是(正如 DSM 指出的那样)与.drop('id', 1)
。但是,如果您可以安排连接的列从一开始就具有相同的名称,那么df1.merge(df2, on='imp_type')
会是最简单的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)