亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

合并特定日期范圍內的 Pandas DataFrame

合并特定日期范圍內的 Pandas DataFrame

江戶川亂折騰 2023-08-03 16:25:21
我有 2 個數據框。一個用于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]})我的任務是根據兩個條件合并兩個數據幀,并在 滿足這些條件時Yes向新列添加值。Promotion條件如下LocationNo應該匹配應該InvoiceDate位于各自的LocationNo和PromotionStart之間PromotionEnd?;旧希瑑H在和日期InvoiceDate之間進行合并。PromotionStartPromotionEnd
查看完整描述

1 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

讓我們嘗試merge過濾一下:


out = df_1.merge(df_2, on='LocationNo', how='left')


df_1['Promotion'] = np.where(out['InvoiceDate'].between(out['PromotionStart'], out['PromotionEnd']),

                             'Yes', '')

輸出:


   LocationNo InvoiceDate  InvoiceAmount Promotion

0           A   01-Jul-20             79       Yes

1           B   01-Jul-20             72          

2           C   01-Jul-20             24          

3           A   02-Jul-20             68       Yes

4           B   02-Jul-20              6       Yes

5           C   02-Jul-20             27          

6           A   03-Jul-20             25          

7           B   03-Jul-20             62       Yes

8           C   03-Jul-20             58       Yes

9           D   03-Jul-20             36       Yes

10          E   03-Jul-20             65          

11          F   03-Jul-20             81          


查看完整回答
反對 回復 2023-08-03
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號