如何合并两个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
相关产品推荐
相关产品推荐

