我有两个数据帧。一个用于Invoice Data
,另一个用于Promotion Dates
Invoice Data
数据帧
+------------+-------------+---------------+
| LocationNo | InvoiceDate | InvoiceAmount |
+------------+-------------+---------------+
| A | 01-Jul-20 | 79 |
+------------+-------------+---------------+
| B | 01-Jul-20 | 72 |
+------------+-------------+---------------+
| C | 01-Jul-20 | 24 |
+------------+-------------+---------------+
| A | 02-Jul-20 | 68 |
+------------+-------------+---------------+
| B | 02-Jul-20 | 6 |
+------------+-------------+---------------+
| C | 02-Jul-20 | 27 |
+------------+-------------+---------------+
| A | 03-Jul-20 | 25 |
+------------+-------------+---------------+
| B | 03-Jul-20 | 62 |
+------------+-------------+---------------+
| C | 03-Jul-20 | 58 |
+------------+-------------+---------------+
| D | 03-Jul-20 | 36 |
+------------+-------------+---------------+
| E | 03-Jul-20 | 65 |
+------------+-------------+---------------+
| F | 03-Jul-20 | 81 |
+------------+-------------+---------------+
df_1 = pd.DataFrame({
'LocationNo':['A','B','C','A','B','C','A','B','C','D','E','F'],
'InvoiceDate':['01-Jul-20','01-Jul-20','01-Jul-20','02-Jul-20','02-Jul-20','02-Jul-20',
'03-Jul-20','03-Jul-20','03-Jul-20','03-Jul-20','03-Jul-20','03-Jul-20'],
'InvoiceAmount':[79,72,24,68,6,27,25,62,58,36,65,81]
})
Promotion Dates
数据帧
+------------+----------------+--------------+
| LocationNo | PromotionStart | PromotionEnd |
+------------+----------------+--------------+
| A | 01-Jul-20 | 02-Jul-20 |
+------------+----------------+--------------+
| B | 02-Jul-20 | 03-Jul-20 |
+------------+----------------+--------------+
| C | 03-Jul-20 | 05-Jul-20 |
+------------+----------------+--------------+
| D | 01-Jul-20 | 05-Jul-20 |
+------------+----------------+--------------+
| E | 02-Jul-20 | 02-Jul-20 |
+------------+----------------+--------------+
| F | 05-Jul-20 | 06-Jul-20 |
+------------+----------------+--------------+
df_2 = pd.DataFrame({
'LocationNo' : ['A','B','C','D','E','F'],
'PromotionStart':['01-Jul-20','02-Jul-20','03-Jul-20','01-Jul-20','02-Jul-20','05-Jul-20'],
'PromotionEnd':['02-Jul-20','03-Jul-20','05-Jul-20','05-Jul-20','02-Jul-20','06-Jul-20',]
})
我的任务是根据两个条件合并两个数据帧&;将值Yes
添加到新列Promotion
如果满足这些条件
条件如下
LocationNo
应该匹配基本上,仅当InvoiceDate
介于PromotionStart
和PromotionEnd
日期之间时才合并
我想要的输出如下
+------------+-------------+---------------+-----------+
| LocationNo | InvoiceDate | InvoiceAmount | Promotion |
+------------+-------------+---------------+-----------+
| A | 01-Jul-20 | 79 | Yes |
+------------+-------------+---------------+-----------+
| B | 01-Jul-20 | 72 | |
+------------+-------------+---------------+-----------+
| C | 01-Jul-20 | 24 | |
+------------+-------------+---------------+-----------+
| A | 02-Jul-20 | 68 | Yes |
+------------+-------------+---------------+-----------+
| B | 02-Jul-20 | 6 | Yes |
+------------+-------------+---------------+-----------+
| C | 02-Jul-20 | 27 | |
+------------+-------------+---------------+-----------+
| A | 03-Jul-20 | 25 | |
+------------+-------------+---------------+-----------+
| B | 03-Jul-20 | 62 | Yes |
+------------+-------------+---------------+-----------+
| C | 03-Jul-20 | 58 | Yes |
+------------+-------------+---------------+-----------+
| D | 03-Jul-20 | 36 | Yes |
+------------+-------------+---------------+-----------+
| E | 03-Jul-20 | 65 | |
+------------+-------------+---------------+-----------+
| F | 03-Jul-20 | 81 | |
+------------+-------------+---------------+-----------+
我知道如何根据多种条件合并列。但是,在这种情况下,我需要在Date Range
中合并
请告诉我该如何解决这个问题
让我们尝试
merge
并筛选:输出:
相关问题 更多 >
编程相关推荐