Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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 如何使用dataframe中的startDate和endDate,并使用它过滤pyspark中的另一个数据帧_Python_Pyspark_Pyspark Dataframes - Fatal编程技术网

Python 如何使用dataframe中的startDate和endDate,并使用它过滤pyspark中的另一个数据帧

Python 如何使用dataframe中的startDate和endDate,并使用它过滤pyspark中的另一个数据帧,python,pyspark,pyspark-dataframes,Python,Pyspark,Pyspark Dataframes,我有两张表,如下所示: 第一张表: +---+------+----------+----------+ | id|sub_id| startDate| endDate| +---+------+----------+----------+ | 2| a|2018-11-15|2018-12-01| | 2| b|2018-10-15|2018-11-01| | 3| a|2018-09-15|2018-10-01| +---+------+----------

我有两张表,如下所示: 第一张表:

+---+------+----------+----------+
| id|sub_id| startDate|   endDate|
+---+------+----------+----------+
|  2|     a|2018-11-15|2018-12-01|
|  2|     b|2018-10-15|2018-11-01|
|  3|     a|2018-09-15|2018-10-01|
+---+------+----------+----------+
第二张表:

+---+----------+----+
| id|      date|time|
+---+----------+----+
|  2|2018-10-15|1200|
|  2|2018-10-16|1200|
|  2|2018-10-18|1200|
|  3|2018-09-28|1200|
|  3|2018-09-29|1200|
+---+----------+----+
对于特定的id和给定的startDate和endDate,我需要在给定的时间范围内过滤第二个表

从过滤表中,我要求时间列和输出的总和如下所示:

+---+------+----------+----------+---------+
| id|sub_id| startDate|   endDate|totalTime|
+---+------+----------+----------+---------+
|  2|     a|2018-11-15|2018-12-01|        0|
|  2|     b|2018-10-15|2018-11-01|     3600|
|  3|     a|2018-09-15|2018-10-01|     2400|
+---+------+----------+----------+---------+

我的目标是避免将for循环与过滤器一起使用。我尝试使用pandas_udf,但它只适用于一个数据帧。

您可以在id上加入两个数据帧,然后过滤掉所需的记录。在它之后执行groupBy。但我有一个疑问,一个id是否可以有多个开始和结束日期,如第一个表所示?是的,一个id可以有多个开始日期和结束日期。这就是我无法使用join的原因。同一id是否可以有重叠的句点?例如,(ID,StaskDead,EndoDeDead)= [(2,2019-10-01,2019-10-20),(2,2019-10-05,2019-10-25)] @ ShivanshuPande,所以我们可以考虑在ID为2,min开始日期和最大结束日期为时间帧的情况下是否有一个ID的多行。对于id 2:(2018-10-15至2018-12-01)@ksgj1是的,它可以有重叠的周期