[英]Inner join in pandas
我有两个数据框:
awb_number route value sla_actual (days)
01 A - B 24,000 2
02 A - C 25,000 3
03 C - B 29,000 5
04 B - D 35,000 6
route sla_partner (days)
A - B 4
B - A 3
A - C 3
B - D 5
我想调查 SLA 实际和 3PL SLA 之间的差距,所以我要做的是根据路线加入这两个数据帧。
我以为结果会是这样的:
awb_number route value sla_actual sla_partner
01 A - B 24,000 2 4
02 A - C 25,000 3 3
03 C - B 29,000 5 NaN
04 B - D 35,000 6 5
我所做的是:
df_sla_check = pd.merge(df_actual, df_sla_partner, on = ['route_city_lazada'], how = 'inner')
第一个 dataframe 有 36,000 行,而第二个 dataframe 有 20,000 行,但结果返回超过 700,000 行。 我的逻辑有问题吗? 它不应该返回大约 20,000 行 - 36,000 行吗?
有人可以帮我如何正确地做到这一点吗?
先感谢您
应用左外连接。 我认为它会解决问题。
根据@boi-doingthings 和@Peddi Santhoshkumar 提出的观点,我还建议使用left
连接符,例如以下数据集:
df_sla_check = pd.merge(df_actual, df_sla_partner, on=['route'], how='left')
对于您所展示的内容, 'route'
可能是您专栏的合适名称。
请确认参数中传入的on
字段。 此外,您应该检查发生连接的唯一键的数量。 加入的 dataframe 中峰值的最自然原因是df1
的一个记录被映射到df2
的多个记录,反之亦然。
df1.route.value_counts()
df2.route.value_counts()
另一种方法是将how
参数更改为“left”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.