【问题标题】:Spark Dataframe lambda on dataframe directly直接在数据帧上触发数据帧 lambda
【发布时间】:2021-10-26 04:19:32
【问题描述】:

我看到很多示例需要在 rdd.map 上使用 lambda。
只是想知道我们是否可以执行以下操作:

df.withColumn('newcol',(lambda x: x['col1'] + x['col2'])).show()

【问题讨论】:

  • 你需要执行什么操作?如果你只是想总结两列,那么你可以不使用 lambda 直接完成。
  • 我只是想知道是否可以直接使用 lambda over dataframe 直接完成,而不需要 rdd

标签: pyspark azure-databricks


【解决方案1】:

您必须将其包装在 UDF 中并提供您希望应用 lambda 的列。

例子:

from pyspark.sql import SparkSession
import pyspark.sql.functions as F

if __name__ == "__main__":
    spark = SparkSession.builder.getOrCreate()
    data = [{"a": 1, "b": 2}]
    df = spark.createDataFrame(data)
    df.withColumn("c", F.udf(lambda x, y: x + y)("a", "b")).show()

结果:

+---+---+---+
|  a|  b|  c|
+---+---+---+
|  1|  2|  3|
+---+---+---+

【讨论】:

  • 哇~~这是一个非常酷的演示。非常感谢
  • @mytabi 不客气!如果这回答了您的问题,请将其标记为已回答。
猜你喜欢
  • 2017-06-05
  • 2021-06-25
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 2018-01-26
  • 2019-10-28
相关资源
最近更新 更多