Предположим, у меня есть этот фрейм данных ..
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 .