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