我想在滾動日期加入兩個表,如下所示。是否可以在 Python 中做與在 R 中相同的事情?我沒有在網上找到任何在 Python 中進行滾動連接的示例。提前致謝。
sales <- data.table(
SaleId = c("S1", "S2", "S3", "S4", "S5"),
SaleDate = as.Date(c("2014-2-20", "2014-5-1", "2014-6-15", "2014-7-1", "2014-12-31"))
)
sales
commercials <- data.table(
CommercialId = c("C1", "C2", "C3", "C4"),
CommercialDate = as.Date(c("2014-1-1", "2014-4-1", "2014-7-1", "2014-9-15"))
)
commercials
setkey(sales, "SaleDate")
setkey(commercials, "CommercialDate")
commercials[sales, roll = TRUE]
output:-
## CommercialId CommercialDate RollDate SaleId SaleDate
## 1: C1 2014-01-01 2014-02-20 S1 2014-02-20
## 2: C2 2014-04-01 2014-05-01 S2 2014-05-01
## 3: C2 2014-04-01 2014-06-15 S3 2014-06-15
## 4: C3 2014-07-01 2014-07-01 S4 2014-07-01
## 5: C4 2014-09-15 2014-12-31 S5 2014-12-31
uj5u.com熱心網友回復:
pd.merge_asof 可以在最近的日期合并,如果需要,可以使用可選引數來控制方向。
import pandas as pd
sales = pd.DataFrame({
'SaleId':["S1", "S2", "S3", "S4", "S5"],
'SaleDate': pd.to_datetime(["2014-2-20", "2014-5-1", "2014-6-15", "2014-7-1", "2014-12-31"])
})
commercials = pd.DataFrame({
'CommercialId':["C1", "C2", "C3", "C4"],
'CommercialDate':pd.to_datetime(["2014-1-1", "2014-4-1", "2014-7-1", "2014-9-15"])
})
pd.merge_asof(sales, commercials, left_on='SaleDate', right_on='CommercialDate')
輸出
SaleId SaleDate CommercialId CommercialDate
0 S1 2014-02-20 C1 2014-01-01
1 S2 2014-05-01 C2 2014-04-01
2 S3 2014-06-15 C2 2014-04-01
3 S4 2014-07-01 C3 2014-07-01
4 S5 2014-12-31 C4 2014-09-15
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410470.html
標籤:
上一篇:優化并行函式中的多個串列遍歷
