Python 如果日期与其他日期相差2天,如何按日期筛选?
我有一个包含两个事件的日期框。第一个事件是交易,第二个事件是电子邮件。每个事件都有一个时间框架。我必须只显示那些在交易后2天内收到的电子邮件Python 如果日期与其他日期相差2天,如何按日期筛选?,python,date,Python,Date,我有一个包含两个事件的日期框。第一个事件是交易,第二个事件是电子邮件。每个事件都有一个时间框架。我必须只显示那些在交易后2天内收到的电子邮件 数据是从SQL server下载的,但我不知道如何在SQL中以这种方式进行过滤(或者如果可能的话)。假设您有一个SQL表 TABLE EVENTS event_id NUMERIC, event_type VARCHAR, event_time DATETIME 您可以使用SQL查询,沿着以下行获取满足您需求的所有(事务、电子邮件)-对
数据是从SQL server下载的,但我不知道如何在SQL中以这种方式进行过滤(或者如果可能的话)。假设您有一个SQL表
TABLE EVENTS
event_id NUMERIC,
event_type VARCHAR,
event_time DATETIME
您可以使用SQL查询,沿着以下行获取满足您需求的所有(事务、电子邮件)
-对:
SELECT email.event_id,
email.event_time,
transaction.event_id,
transaction.event_time
FROM EVENTS email JOIN
EVENTS transaction ON
(DATEDIFF(day, transaction.event_time, email.event_time) BETWEEN 0 AND 2)
如果您想在熊猫中执行此操作,您可以应用类似的逻辑。好的,我将尝试展示答案以帮助其他人。您需要一个具有两列的模拟表来创建过滤持续时间所需的数据帧 首先 结果
TransEvent EmailEvent DurationDays
0 2013-01-01 2013-01-11 10 days
1 2013-01-02 2013-02-02 31 days
2 2013-01-04 2013-01-06 2 days
3 2013-01-03 2013-01-04 1 days
因此,我们只对持续时间很长的情况感兴趣,您必须在问题和结果中添加一些数据,例如“日期框”是什么?拼写错误-数据框二;)
TransEvent EmailEvent DurationDays
0 2013-01-01 2013-01-11 10 days
1 2013-01-02 2013-02-02 31 days
2 2013-01-04 2013-01-06 2 days
3 2013-01-03 2013-01-04 1 days
#show only those emails that were received within 2 days of the transaction.
df[df['DurationDays']<= pd.Timedelta(2,'D')]
EmailEvent TransEvent DurationDays
2 2013-01-06 2013-01-04 2 days
3 2013-01-04 2013-01-03 1 days