Pandas Pyspark数据帧udf依赖于以前的索引值

Pandas Pyspark数据帧udf依赖于以前的索引值,pandas,dataframe,apache-spark,pyspark,apache-spark-sql,Pandas,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,假设我有一个像这样的数据帧 日期 瓦尔1 瓦尔2 Val 2大于prev 2020-11-13 4. 5. 楠 2020-11-14 6. 9 对 您可以使用窗口功能lag将val2与前一行进行比较: from pyspark.sql import functions as F, Window df.show() +----------+----+----+ | Date|Val1|Val2| +----------+----+----+ |2020-11-13| 4| 5|

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

日期 瓦尔1 瓦尔2 Val 2大于prev 2020-11-13 4. 5. 楠 2020-11-14 6. 9 对
您可以使用窗口功能
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|
+----------+----+----+----------------------+

这里你不需要自定义项。用
when
之类的
F.when(F.col(“Val 2”)>F.col(“Val 1”),“yes”)
@anky我错误地陈述了我的问题,并进行了编辑。我的意思是,我需要一个函数,当当前行大于前一行而不是前一列时返回。然后可以使用
lead
lag
函数进行比较。看到和