Python 具有第一个非缺失值的正向填充行

Python 具有第一个非缺失值的正向填充行,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,我有一个表格,在第一个数字出现后,需要重复填写数字,然后填写所有列 以下是一个表格示例: student_id 2016Q1 2016Q2 2016Q3 2016Q4 2017Q1 2017Q2 2017Q3 1 1 2 1 3 1 4 1 5

我有一个表格,在第一个数字出现后,需要重复填写数字,然后填写所有列

以下是一个表格示例:

student_id    2016Q1   2016Q2   2016Q3 2016Q4  2017Q1 2017Q2 2017Q3
1                        1
2                 1
3                                 1
4                                                1
5                                                1
6                                                        1
7                                                 1

我正在使用pyspark和Python。我尝试在excel中手动完成,但这太多了。我想知道pyspark或pyspark.sql中是否有函数能够生成下表。谢谢

我希望结果如下表所示

student_id    2016Q1   2016Q2   2016Q3 2016Q4  2017Q1 2017Q2 2017Q3
1                        1        1       1       1     1      1
2                 1      1        1       1       1     1      1
3                                 1       1       1     1      1
4                                                 1     1      1
5                                                 1     1      1
6                                                       1      1
7                                                 1     1      1


假设这些空格实际上是null*,您可以使用

枚举列并合并当前列之前和包括当前列在内的每一列的值。这将返回该行中的第一个非空值

从pyspark.sql.functions导入合并 fill\u cols=df.columns[1:]排除学生id 选择 学生证, *[合并*填充列[:i+1]。i的别名c,枚举填充列中的别名c] 显示 +-----+---+---+---+---+---+---+---+ |学生证| 2016Q1 | 2016Q2 | 2016Q3 | 2016Q4 | 2017Q1 | 2017Q2 | 2017Q3| +-----+---+---+---+---+---+---+---+ |1 |空| 1 | 1 | 1 | 1 | 1 | 1| | 2| 1| 1| 1| 1| 1| 1| 1| |3 |零|零| 1 | 1 | 1 | 1 | 1| |4 |空|空|空|空| 1 | 1| |5 |空|空|空|空| 1 | 1| |6 |零|零|零|零|零| 1 | 1| |7 |空|空|空|空| 1 | 1| +-----+---+---+---+---+---+---+---+
*如果不是,首先。

假设这些空格实际上是空的*,您可以使用

枚举列并合并当前列之前和包括当前列在内的每一列的值。这将返回该行中的第一个非空值

从pyspark.sql.functions导入合并 fill\u cols=df.columns[1:]排除学生id 选择 学生证, *[合并*填充列[:i+1]。i的别名c,枚举填充列中的别名c] 显示 +-----+---+---+---+---+---+---+---+ |学生证| 2016Q1 | 2016Q2 | 2016Q3 | 2016Q4 | 2017Q1 | 2017Q2 | 2017Q3| +-----+---+---+---+---+---+---+---+ |1 |空| 1 | 1 | 1 | 1 | 1 | 1| | 2| 1| 1| 1| 1| 1| 1| 1| |3 |零|零| 1 | 1 | 1 | 1 | 1| |4 |空|空|空|空| 1 | 1| |5 |空|空|空|空| 1 | 1| |6 |零|零|零|零|零| 1 | 1| |7 |空|空|空|空| 1 | 1| +-----+---+---+---+---+---+---+---+
*如果没有,首先。

非常感谢您!我编辑了它一点,它的作品完美!我会记住这一点,以备将来使用。这是很好的学习!非常感谢你!我编辑了它一点,它的作品完美!我会记住这一点,以备将来使用。这是很好的学习!