我有两个数据帧。第一个包含关于订单的数据:df\u 1,列为['uid'、'revenue'、'order\u day'],共50415行。第二个包含关于访问的信息:df\u 2,列为['uid','source','session\u day',行数为358532。我想从访客的数据框中得到客户的来源。我试图通过两列来合并数据帧:result = df_1.merge(df_2, how=left ,left_on=['uid','order_day'],right_on=['uid','session_day'])
,但结果是得到62369行,'revenue'
列的总和增加了。我不明白为什么会这样。当我写how='left'
时,我希望左边的dfu 1是不变的,并且将添加在dfu 2中的'uid'
和'..._day'
中相似的行。有人能解释一下为什么我没有得到预期的结果,以及我应该怎么做吗?如有任何评论,我们将不胜感激
合并结果中的行数超过df\u 1 可以通过以下示例进行解释:
数据框1包含2行:
数据框2包含5行:
请注意,它包含:
这就是为什么合并的结果是:
可能您假设合并是按以下方式执行的:
实际上,“左”合并是以另一种方式执行的:
如果要将df_1中的每一行与合并,最多1行 从df_2开始,您必须从drop_duplacates开始,从df_2开始,使用subset 包含合并列
相关问题 更多 >
编程相关推荐