当前位置: 首页 > 知识库问答 >
问题:

熊猫在具有不同名称的列上合并并避免重复[重复]

龚钧
2023-03-14

如何将两个熊猫DataFrames合并到两个具有不同名称的列上,并保留其中一个列?

df1 = pd.DataFrame({'UserName': [1,2,3], 'Col1':['a','b','c']})
df2 = pd.DataFrame({'UserID': [1,2,3], 'Col2':['d','e','f']})
pd.merge(df1, df2, left_on='UserName', right_on='UserID')

这提供了一个像这样的数据帧

但是很明显,我正在合并UserNameUserID,所以它们是相同的。我想让它看起来像这样。有什么干净的方法可以做到这一点吗?

我唯一能想到的方法是在合并之前将列重新命名为相同的列,或者在合并之后删除其中一个列。如果熊猫自动掉落其中一只,我会很高兴,或者我可以做类似的事情

pd.merge(df1, df2, left_on='UserName', right_on='UserID', keep_column='left')

共有2个答案

漆雕伟志
2023-03-14

这里面没有什么好东西:它的意思是保留列,因为较大的案例(如左-右或外部联接)会为两列带来额外的信息。不要试图过度设计你的合并行,要像你建议的那样明确

解决方案一:

df2.columns = ['Col2', 'UserName']

pd.merge(df1, df2,on='UserName')
Out[67]: 
  Col1  UserName Col2
0    a         1    d
1    b         2    e
2    c         3    f

解决方案2:

pd.merge(df1, df2, left_on='UserName', right_on='UserID').drop('UserID', axis=1)
Out[71]: 
  Col1  UserName Col2
0    a         1    d
1    b         2    e
2    c         3    f
郝乐心
2023-03-14

如何设置UserID作为索引,然后加入第二个数据帧的索引?

pd.merge(df1, df2.set_index('UserID'), left_on='UserName', right_index=True)

#   Col1    UserName    Col2
# 0    a           1       d
# 1    b           2       e
# 2    c           3       f
 类似资料:
  • 问题内容: 我正在尝试在两个数据帧之间合并。每个数据帧都有两个索引级别(日期,客户)。在列中,例如,某些列在两者之间匹配(货币,日期)。 按索引合并这些内容的最佳方法是什么,但不要采用两个副本的货币和日期。 每个数据框都是90列,所以我试图避免用手将所有内容写出来。 如果我做: 我懂了 谢谢!… 问题答案: 您可以算出仅在一个DataFrame中的列,并使用它来选择合并中列的子集。 然后执行合并(

  • 我想对两个不同的数据帧执行一些sql操作。不幸的是,就像我处理的数据一样,拼写通常是不同的。 下面是一个示例,其中userid属于df1,username属于df2。有人帮我吗?

  • 我肯定错过了一些简单的东西。尝试合并熊猫中的两个数据帧,它们的列名基本相同,但右边的数据帧有一些左边没有的列,反之亦然。 我已尝试使用外部联接进行联接: 但这会产生: 我还指定了一个要连接的列(例如,on="id"),但这会重复所有列,除了"id",如attr_1_x、attr_1_y,这并不理想。我还传递了整个列列表(有很多)到on: 其产生: 我错过了什么?我想得到一个附加了所有行的df,并且

  • 问题内容: 我有一个数据帧,其中有几行几乎是彼此重复的,除了一个值。我的目标是将这些行合并或“合并”为单行,而无需对数值进行求和。 这是我正在使用的示例: 这就是我想要的: 我不想汇总“收入”列的原因是因为我的表是在多个时间段内进行数据透视的结果,其中“收入”只是最终多次列出,而不是每个“ Use_Case”都有不同的值。 解决这个问题的最佳方法是什么?我已经研究过该功能,但是我仍然不太了解它。

  • 在Python中,我有下面的代码,可以读取所有具有工作表名称的文件: 问题是有些文件有轻微的变化,例如有些工作表被命名为,等。 有没有一种方法可以编写代码,基本上说‘包括名称中有的工作表名称’?

  • 问题内容: 我正在尝试在名称和最近日期(WRT左手数据框)上合并两个数据框。在我的研究中,我在这里发现了一个类似的问题,但它也没有说明名称。从上面的问题来看,似乎没有一种方法可以执行合并操作,但是我看不到另一种不使用pandas合并功能的方法来执行两个参数联接。 有没有办法做到这一点与合并?如果不是,那么合适的方法是什么呢? 我将发布我尝试过的内容的副本,但这是在日期上进行准确合并的尝试,因此无法