【问题标题】:Merge pandas dataframes, combine same column that are not key合并熊猫数据框,合并非关键的同一列
【发布时间】:2021-09-02 09:33:56
【问题描述】:

我想合并三个数据框。我试图简化问题来解释:我有df 与列['1', '2', '3']df1 与列['1', '2', '3']df2 与列['1', '2', '3']

我想合并键 1 和 2 上的数据框。

我尝试了以下(简化):

new = pd.merge(df, df1, how = 'left', on = [ '1', '2'])
new1 = pd.merge(new, df2, how = 'left', on = ['1', '2'])

现在你得到了结果

  • new 与列 ['1', '2', '3_x', '3_y']
  • new1 与列 ['1', '2', '3_x', '3_y', '3_z']

我愿意

  • new 与列 ['1', '2', '3']
  • new1 与列 ['1', '2', '3']

欢迎任何帮助!我不想使用循环。

提前致谢。

【问题讨论】:

    标签: python pandas dataframe merge concatenation


    【解决方案1】:

    Merge 将仅“合并”您在“on”中指定的列(并且仅在列上)。也就是说,这是按预期工作的。

    如果您有匹配的第 1 列和第 2 列但不同的第 3 列并且您进行了合并,那么我们的新输出中的每一列应该是什么? 1 和 2 将是它们在两个原始文件中的任何内容,但第 3 列有两个不同的选项。合并的功能是按不同的列拆分它们。

    您可能想要的是append。 Append 会将一个数据框放在另一个数据框下方,如本页所述:https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#concatenating-using-append

    这将为您提供包含 '1', '2', '3' 列的输出。

    new = df.append(df1)
    new1 = new.append(df2)
    

    你甚至可以做new = df.append([df1,df2]),但我没有尝试过,手边没有 3 个数据框。

    您确实说过您只想合并第 1 列和第 2 列,所以我可能完全错过了您的观点。在这种情况下,您对第 3 列中的数据有何要求?您可以通过使用 append 然后删除一些重复项或以其他方式清理此输出来实现此目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-31
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      相关资源
      最近更新 更多