我在熊猫中有以下两个数据框
trans_df
code price date time product
12023 71.23 01-01-2018 06:23:00 MS
12023 61 01-01-2018 07:56:00 HS
12023 71.23 01-01-2018 08:34:00 MS
12023 71.30 01-01-2018 06:03:00 MS
12023 61 01-01-2018 11:43:00 HS
12023 71.23 01-01-2018 10:11:00 MS
12023 71.23 01-01-2018 04:23:00 MS
master_price
code price effective_date_from effective_date_to time_from time_to product
12023 71.23 01-01-2018 02-01-2018 06:00:00 05:59:00 MS
12023 61 01-01-2018 02-01-2018 06:00:00 05:59:00 HS
12023 72.23 01-01-2018 02-01-2018 10:00:00 05:59:00 MS
我想要的数据框是
trans_df
code price date time product flag price
12023 71.23 01-01-2018 06:23:00 MS match 71.23
12023 61 01-01-2018 07:56:00 HS match 61
12023 71.23 01-01-2018 08:34:00 MS match 71.23
12023 71.30 01-01-2018 06:03:00 MS mismatch 71.30
12023 61 01-01-2018 11:43:00 HS match 61
12023 71.23 01-01-2018 10:11:00 MS mismatch 72.23
12023 71.23 01-01-2018 14:23:00 MS mismatch 72.23
逻辑是,我想比较在trans_df
中为MS和HS设置的价格在日期时间和master_price
中的价格范围内
一天中可能会有两种不同的价格变化。
例如在master_price
中于2018年1月1日的06:00:00(即71.23),下一次价格更改是在10:00:00,因此在06:00:00- 10:00:00之间发生的交易应收取价格72.23
,直到1 {0:00},71.23
到effective_date_to
为止,如果我们发现价格不匹配,则将其标记为mismatch
,且价格正确。
答案 0 :(得分:0)
遵循Merging two dataframes based on a date between two other dates without a common column中的方法,
此方法用于:
对于大量行,此解决方案将不是最佳选择。