You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并两个DataFrame,确保不同顺序的行数据正确匹配?

问题描述

现有两个DataFrame:
Dataframe One

number   email          name
0   1234     me@mail.com    Me
1   5678     you@mail.com   You
2   9012     us@mail.com    Us
3   3456     them@mail.com  Them

Dataframe Two

email         name    open  click
0   you@mail.com  You     31    7  
1   them@mail.com Them    84    15
2   me@mail.com   Me      6     1
3   us@mail.com   Us      0     4

想要合并成包含number、email、name、open、click列的DataFrame,期望输出如下:
期望输出

number   email          name   open  click
0   1234     me@mail.com    Me     6     1
1   5678     you@mail.com   You    31    7
2   9012     us@mail.com    Us     0     4
3   3456     them@mail.com  Them   84    15

由于两个DataFrame的email和name列顺序不同,不知道如何确保Dataframe Two中的open和click数据能正确匹配到Dataframe One的对应行。

解决方法

直接用pandas的merge()方法即可,核心是指定匹配的依据列,它会自动根据列内容匹配数据,和行的顺序完全无关。

具体代码

import pandas as pd

# 假设df1是你的Dataframe One,df2是Dataframe Two
merged_df = pd.merge(df1, df2, on=['email', 'name'], how='left')

关键参数说明

  • on=['email', 'name']:把这两列作为匹配的唯一标识,只有当两行的email和name完全一致时才会合并,避免仅靠单列匹配可能出现的错误。
  • how='left':以df1(即需要保留原有顺序的DataFrame)为基准,保留它的所有行,同时把df2中对应匹配到的open、click数据补过来,这样合并后的结果会严格保持df1的原有行顺序,和期望输出完全一致。

运行完这段代码,得到的merged_df就是你想要的结果。


内容的提问来源于stack exchange,提问作者Ed Jefferies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:32:06