合并两个数据帧,但得到的行比第一个数据帧多



我应用merge函数合并两个具有两个公共列的数据框,但是输出数据框df比df1包含更多的行。我期望输出中只有df1中的行(不确定它是否总是正确的?)。造成这个结果的可能原因是什么?

df = pd.merge(df_1, df_3, how='left', left_on=['id','time'], right_on = ['id','time'])

pd.merge() with how='left'将创建额外的行,因为很可能在df_3中有多个行与df_1中相同的id和时间组合相匹配。

如果你想避免,你需要预处理你的数据,以确保在df_1中每个id和时间组合在df_3中最多有一个匹配行。这可以使用drop_duplications()或groupby()

等方法来完成。的例子:

df_3_unique = df_3.drop_duplicates(subset=['id', 'time'])
df = pd.merge(df_1, df_3_unique, how='left', left_on=['id', 'time'], right_on=['id', 'time'])

相关内容

  • 没有找到相关文章

最新更新