Pandas 熊猫中嵌套秩的条件合并

Pandas 熊猫中嵌套秩的条件合并,pandas,merge,Pandas,Merge,我正在尝试将嵌套秩的条件合并从SQL转换为Python。 具体地说,我想合并两个表并添加一个条件,以确保1:1的关系并指定采用哪个值。 在SQL中,这将由一个子查询实现,该子查询的列组是单边连接的条件 示例 我将customer records表与customer requests表合并。 结果应显示其自身时间戳之前或时间的最新记录 table: Customer_records +---------+------+------------+ | Cust_ID | Name | Timesta

我正在尝试将嵌套秩的条件合并从SQL转换为Python。 具体地说,我想合并两个表并添加一个条件,以确保1:1的关系并指定采用哪个值。 在SQL中,这将由一个子查询实现,该子查询的列组是单边连接的条件

示例

我将customer records表与customer requests表合并。 结果应显示其自身时间戳之前或时间的最新记录

table: Customer_records
+---------+------+------------+
| Cust_ID | Name | Timestamp  |
+---------+------+------------+
|       1 | A    | 2013-01-01 |
|       1 | A    | 2014-01-01 |
|       1 | A    | 2015-12-01 |
|       2 | B    | 2014-01-01 |
|       3 | C    | 2014-01-01 |
+---------+------+------------+

table: customer_request
+--------+---------+------------+
| Req_ID | Cust_ID | Timestamp  |
+--------+---------+------------+
|      1 |       1 | 2013-01-01 |
|      2 |       1 | 2013-12-01 |
|      3 |       1 | 2015-01-01 |
|      4 |       2 | 2013-01-01 |
+--------+---------+------------+

table: merged
+---------+------+------------+--------+
| Cust_ID | Name | Timestamp  | Req_ID |
+---------+------+------------+--------+
|       1 | A    | 2013-01-01 | 1      |
|       1 | A    | 2014-01-01 | 2      |
|       1 | A    | 2015-12-01 | 3      |
|       2 | B    | 2014-01-01 | 4      |
|       3 | C    | 2014-01-01 | None   |
+---------+------+------------+--------+
使用,只需按
时间戳
列对
数据帧
进行必要的排序:

Customer_records['Timestamp'] = pd.to_datetime(Customer_records['Timestamp'])
customer_request['Timestamp'] = pd.to_datetime(customer_request['Timestamp'])

Customer_records = Customer_records.sort_values('Timestamp')
customer_request = customer_request.sort_values('Timestamp')

df = pd.merge_asof(Customer_records, customer_request, on='Timestamp', by='Cust_ID')
   Cust_ID Name  Timestamp  Req_ID
0        1    A 2013-01-01     1.0
1        1    A 2014-01-01     2.0
2        2    B 2014-01-01     4.0
3        3    C 2014-01-01     NaN
4        1    A 2015-12-01     3.0

这非常有用。但是,这是特定于1:1匹配场景的情况。我要求对条件连接中的排名进行一般翻译,以便能够将SQL代码翻译成熊猫,以便进行更复杂的查询;例如,其中两个最新值(秩