Dataframe Pyspark:向前填充A列,并添加B列中的值

Dataframe Pyspark:向前填充A列,并添加B列中的值,dataframe,pyspark,apache-spark-sql,pyspark-dataframes,Dataframe,Pyspark,Apache Spark Sql,Pyspark Dataframes,我有一个pyspark数据框,在这里我试图使用colu_b中以前可用的值+值来填充colu_a中的值。 下面是输入数据帧 Input Dataframe | id | date | col_a | col_b | manufactured | |----|------------|-------|-------|--------------| | 1 | 2020-01-01 | 100 | 10 | N | | 1 | 2020-01-02 |

我有一个pyspark数据框,在这里我试图使用colu_b中以前可用的值+值来填充colu_a中的值。 下面是输入数据帧

Input Dataframe
| id | date       | col_a | col_b | manufactured |
|----|------------|-------|-------|--------------|
| 1  | 2020-01-01 | 100   | 10    | N            |
| 1  | 2020-01-02 | null  | null  | Y            |
| 1  | 2020-01-03 | null  | 10    | Y            |
| 1  | 2020-01-04 | null  | null  | Y            |
| 1  | 2020-01-05 | null  | 20    | Y            |
| 1  | 2020-01-06 | 115   | -15   | N            |
| 1  | 2020-01-07 | null  | 5     | Y            |
我非常希望看到以下结果:

Expected Output
| id | date       | col_a | col_b | manufactured |
|----|------------|-------|-------|--------------|
| 1  | 2020-01-01 | 100   | 10    | N            |
| 1  | 2020-01-02 | 100   | null  | Y            |
| 1  | 2020-01-03 | 110   | 10    | Y            |
| 1  | 2020-01-04 | 110   | null  | Y            |
| 1  | 2020-01-05 | 130   | 20    | Y            |
| 1  | 2020-01-06 | 115   | -15   | N            |
| 1  | 2020-01-07 | 120   | 5     | Y            |
到目前为止,我已经使用lag函数编写了以下代码,但是我得到了不一致的结果,在某些地方它做了正确的事情,在另一些地方它没有

# Code
import pyspark.sql.functions as F
from pyspark.sql import Window

wind = Window\
        .partitionBy('id')\
        .orderBy('date')

df = df.withColumn('col_b', F.when(df['col_b'].isNull(), 0).otherwise(df['col_b']))

df = df.withColumn('col_a', F.when((df['manufactured'] == 'Y'), F.lag(
    'col_a').over(wind) + df['col_b']).otherwise(df['col_a']))
这里的实际输出

| id | date       | col_a | col_b | manufactured |
|----|------------|-------|-------|--------------|
| 1  | 2020-01-01 | 100   | 10    | N            |
| 1  | 2020-01-02 | 100   | null  | Y            |
| 1  | 2020-01-03 | 100   | 10    | Y            |
| 1  | 2020-01-04 | 100   | null  | Y            |
| 1  | 2020-01-05 | 100   | 20    | Y            |
| 1  | 2020-01-06 | 115   | -15   | N            |
| 1  | 2020-01-07 | 120   | 5     | Y            |
任何帮助都将不胜感激