我最近开始在工作中使用python而不是SQL。我无权访问任何服务器,IT也不允许我安装SQL SERVER EXPRESS的本地实例。数据集太大,无法使用Excel或Access。
我将有限的python知识用作解决方法。我已经成功分析了其他数据集,但是这提出了一个新的挑战。 我有一个非常大的数据集(25毫米以上的行),我想执行以下操作: 在T-SQL中:
SELECT
A.TransactionDate,
B.StartDate,
B.EndDate,
B.RefValue
FROM table1 AS A
LEFT JOIN table2 AS B
ON A.TransactionDate BETWEEN B.StartDate AND B.EndDate
OR
ON A.Date1 >= B.StartDate AND A.Date <= B.EndDate
样本数据:
import pandas as pd
df1 = pd.DataFrame(
{
'TranDate': ['2018/01/05', '2018/02/07', '2018/03/24']
,'Loc': [4000, 5000, 4200]
}
)
df2 = pd.DataFrame(
{
'StartDate': ['2018/01/01', '2018/02/01', '2018/03/01']
,'EndDate': ['2018/01/31','2018/02/28', '2018/03/30']
,'PP': ['01', '02', '03']
}
)
预期数据框:
dfR = pd.DataFrame(
{
'TranDate': ['2018/01/05', '2018/02/07', '2018/03/24']
,'Loc': [4000, 5000, 4200]
,'PP': ['01', '02', '03']
}
)
我尝试使用pandas.merge()
语句,但是对于不等式没有选择。
如何在python中重新创建上一条语句?
答案 0 :(得分:0)
好吧,您可以先尝试以下方法:
dfR = df1.copy()
dfR.loc[dfR['TranDate'].between(df2['StartDate'], df2['EndDate']), 'PP'] = df2['PP']
也许这对您有用。