首页 > 解决方案 > 如何在 pandas 的 4 个数据帧上进行多种类型的连接

问题描述

我有 4 个数据框,我应用了 inner join 和 left joins 。

我正在尝试用 python 重写查询。我们如何在 pandas 代码中一次完成所有连接。

SQL

 select hd.order_no,hd.order_id,hd.ship_country,User.LT_ID,User.DEST_REGION,Auto.m0_act_0400,Auto.m0_act_0500
    FROM
        header hd
        INNER JOIN key ky ON (hd.order_no = ky.order_no)
        LEFT JOIN User lt on (ky.lt_id = lt.lt_id)
        LEFT JOIN Auto a on (hd.order_id = a.order_id )

*

如何在熊猫中轻松做到这一点。

标签: python-3.xpandasdataframejoin

解决方案


你可以试试这个:

(header.merge(Key, 
              left_on='order_no', 
              right_on='ORDER_NO',      # pandas/python cares about cases     
              how='inner')              # how='inner' is default so can be skipped
     .merge(User, on='LT_ID', how='left')           # chaining merge
     .merge(Auto, on='order_id', how='left')
     [['order_no', 'order_id', 'ship_country',      # select the columns
       'LT_ID', 'DEST_REGION', 'm0_act_0400', 'm0_act_0500']]
)

有关详细信息,merge请参阅此问题


推荐阅读