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

2023-12-21

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

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(使用前将#替换为@)

Pandas 合并列,但不合并“键”列 的相关文章

随机推荐