【问题标题】:Pyspark Dataframe udf dependent on previous index value [closed]Pyspark Dataframe udf 依赖于先前的索引值
【发布时间】:2021-05-04 13:59:56
【问题描述】:

假设我有一个像这样的 pandas 数据框

Date Val1 Val2 Val 2 Greater than prev
2020-11-13 4 5 NaN
2020-11-14 6 9 yes

我可以写什么 udf 来正确填充 Val 2 Greater than prev 行?

我知道如何使用 for 循环和索引访问来解决这个问题,但假设 udf 更容易。

【问题讨论】:

标签: pandas dataframe apache-spark pyspark apache-spark-sql


【解决方案1】:

您可以使用窗口函数lag将val2与上一行进行比较:

from pyspark.sql import functions as F, Window

df.show()
+----------+----+----+
|      Date|Val1|Val2|
+----------+----+----+
|2020-11-13|   4|   5|
|2020-11-14|   6|   9|
+----------+----+----+

df2 = df.withColumn(
    'Val2_greater_than_prev',
    F.col('Val2') > F.lag('Val2').over(Window.orderBy('Date'))
)

df2.show()
+----------+----+----+----------------------+
|      Date|Val1|Val2|Val2_greater_than_prev|
+----------+----+----+----------------------+
|2020-11-13|   4|   5|                  null|
|2020-11-14|   6|   9|                  true|
+----------+----+----+----------------------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2020-05-21
    • 2017-09-09
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    相关资源
    最近更新 更多