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| +-----+---+---+---+---+---+---+---+
*如果没有,首先。非常感谢您!我编辑了它一点,它的作品完美!我会记住这一点,以备将来使用。这是很好的学习!非常感谢你!我编辑了它一点,它的作品完美!我会记住这一点,以备将来使用。这是很好的学习!