Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果日期与其他日期相差2天,如何按日期筛选?_Python_Date - Fatal编程技术网

Python 如果日期与其他日期相差2天,如何按日期筛选?

Python 如果日期与其他日期相差2天,如何按日期筛选?,python,date,Python,Date,我有一个包含两个事件的日期框。第一个事件是交易,第二个事件是电子邮件。每个事件都有一个时间框架。我必须只显示那些在交易后2天内收到的电子邮件 数据是从SQL server下载的,但我不知道如何在SQL中以这种方式进行过滤(或者如果可能的话)。假设您有一个SQL表 TABLE EVENTS event_id NUMERIC, event_type VARCHAR, event_time DATETIME 您可以使用SQL查询,沿着以下行获取满足您需求的所有(事务、电子邮件)-对

我有一个包含两个事件的日期框。第一个事件是交易,第二个事件是电子邮件。每个事件都有一个时间框架。我必须只显示那些在交易后2天内收到的电子邮件


数据是从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