【发布时间】:2021-10-25 23:53:20
【问题描述】:
我有一个数据框,我需要根据之前的日期值修复一些包裹日期。这是一个例子:
+-------------------+---------------------+-----------------------+----------+
|account |contract |contract_parcel | date |
+-------------------+---------------------+-----------------------+----------+
| 92397| 1| 1|2020-12-07|
| 92397| 1| 2| null|
| 92397| 2| 1|2020-12-07|
| 92397| 2| 2| null|
| 92397| 2| 3| null|
| 92397| 2| 4| null|
| 92397| 2| 5| null|
| 92397| 2| 6| null|
| 92397| 3| 1|2021-01-04|
| 92397| 3| 2|2021-02-01|
+-------------------+---------------------+-----------------------+----------+
对于每个帐户,都有多个包含多个包裹的合同。对于那些日期列为null 的人,我需要复制以前的包裹值,但要为所有包裹添加一个月,依此类推。
我尝试将Window 与lag 和last 函数一起使用,但我无法根据之前的值更新日期。我只是设法复制它。
我需要一个像下面这样的输出:
+-------------------+---------------------+-----------------------+----------+
|account |contract |contract_parcel | date |
+-------------------+---------------------+-----------------------+----------+
| 92397| 1| 1|2020-12-07|
| 92397| 1| 2|2021-01-07|
| 92397| 2| 1|2020-12-07|
| 92397| 2| 2|2021-01-07|
| 92397| 2| 3|2021-02-07|
| 92397| 2| 4|2021-03-07|
| 92397| 2| 5|2021-04-07|
| 92397| 2| 6|2021-05-07|
| 92397| 3| 1|2021-01-04|
| 92397| 3| 2|2021-02-01|
+-------------------+---------------------+-----------------------+----------+
我也尝试过遍历数据框,但性能很差。
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql