【问题标题】:Merging two data frames based on the index column根据索引列合并两个数据框
【发布时间】:2015-10-28 12:44:35
【问题描述】:

我有两个数据框,我想根据匹配的行将它们合并为一个数据框。我的数据框看起来像这样

DF_1

设置_1 传真_1 传真_2 ABC_1 45 76 Abc_2 46 77 ABC_3 47 78 Abc_4 48 79 Abc_5 49 80 ABC_6 50 81 ABC_7 51 82 ABC_8 52 83 ABC_9 53 84 Abc_10 54 85

df_2

设置_1 传真_3 传真_4 Abc_1 69 42 Abc_2 70 43 Abc_3 71 44 ABC_6 72 45 Abc_5 73 46 ABC_6 74 47 ABC_7 75 48 ABC_8 76 49 Abc_9 77 50 ABC_10 78 51 ABC_11 55 86 ABC_12 56 87 Abc_13 57 88 Abc_14 58 89 Abc_15 59 90 Abc_16 60 91

第二个是一个更大的数据框,我需要在我的输出文件中,如,

设置_1 传真_1 传真_2 传真_3 传真_4 Abc_1 45 76 69 42 Abc_2 46 77 70 43 Abc_3 47 78 71 44 Abc_4 48 79 72 45 Abc_5 49 80 73 46 Abc_6 50 81 74 47 Abc_7 51 82 75 48 Abc_8 52 83 76 49 Abc_9 53 84 77 50 Abc_10 54 85 78 51

这是我尝试合并的方法,

merged =df.merge(df_annon, on='Set_1')
merged.head()

但它只是给了我标题作为输出。 任何帮助或指导都非常感谢..!!

【问题讨论】:

  • pd.merge 接受两个关键字参数left_index=Trueright_index=True,这会在索引上合并,这可能是您想要的吗?
  • 谢谢你,成功了,merge = df.merge(df_annon, how='inner',left_index=True,right_index=True, on='Set_1)
  • 也可以使用join,它与merge基本相同,但自动使用索引。
  • df_2 有两个 Abc_6 值。你想如何在它们之间做出选择?您可以使用72 4574 47。你给出的例子是后者,但为什么呢?
  • @LondonRob 现在至少有一半的熊猫问题是重复的。 ;-)

标签: python pandas


【解决方案1】:

试试这个

merged = df.merge(df_annon, left_index=True, right_index=True, how='inner')

【讨论】:

    【解决方案2】:

    我想我已经在评论中写下了答案,但让我详细说明一下。

    pandas merge function 接受关键字参数:left_index=right_index=。当设置为True 时,合并函数将使用数据帧的索引/索引进行合并。

    像这样:

    merged = pd.merge(left=df, left_index=True
                      right=df_annon, right_index=True,
                      how='inner')
    

    【讨论】:

    • 对不起。但是使用此解决方案,它会打印所有不匹配的列..
    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多