Pyspark: подсчитать последовательную ячейку в столбце с условием - PullRequest
0 голосов
/ 06 августа 2020

Предположим, у меня есть этот фрейм данных ..

TEST_schema = StructType([StructField("date", StringType(), True),\
                          StructField("col1", IntegerType(), True),\
                          StructField("col2", IntegerType(), True)])
TEST_data = [('2020-08-01',5,-1),('2020-08-02',4,-1),('2020-08-03',3,3),('2020-08-04',2,2),('2020-08-05',1,-1),\
             ('2020-08-06',0,-1),('2020-08-07',0,-1),('2020-08-08',0,2),('2020-08-09',0,-1),('2020-08-10',0,-1),\
             ('2020-08-11',0,-1),('2020-08-12',0,-1),('2020-08-13',0,-1)]
rdd3 = sc.parallelize(TEST_data)
TEST_df = sqlContext.createDataFrame(TEST_data, TEST_schema)
TEST_df.show()



+-------------+----+----+
  date        |col1|col2|
+-------------+----+----+
2020-08-01    |   5|  -1|
2020-08-02    |   4|  -1|
2020-08-03    |   3|   3|
2020-08-04    |   2|   2|
2020-08-05    |   1|  -1*|
2020-08-06    |   0|  -1*|
2020-08-07    |   0|  -1*|
2020-08-08    |   0|   2|
2020-08-09    |   0|  -1|
2020-08-10    |   0|  -1|
2020-08-11    |   0|  -1|
2020-08-12    |   0|  -1|
2020-08-13    |   0|  -1|
+-------------+----+----+

Я хочу подсчитать 1-е последовательные '-1 (обозначенные как -1 * в col2) после col1 = = 1.

поэтому, когда после col1 == 1 df.count(), что даст мне 3, так как есть 3 последовательных -1 после col1 == 1 .

...