我应用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'])