将 UDF 动态应用于数据框中 N 列中的 1 到 N 列

Posted

技术标签:

【中文标题】将 UDF 动态应用于数据框中 N 列中的 1 到 N 列【英文标题】:Apply UDF dynamically to 1 to N columns from N columns in dataframe 【发布时间】:2017-03-15 06:18:37 【问题描述】:

我有要应用 UDF 的架构和列名称。列的名称是用户输入,每个输入的数字可能不同。 有没有办法将 UDF 应用于数据框中的 N 列?

正在努力实现这一目标。 对于带有 col1,col2,col3,col4,col5 的模式

  DataFrame newDF = df.withColumn("col2", callUDF("test", (df.col("col2"))));
  or 
  DataFrame newDF = df.withColumn("col2", callUDF("test", (df.col("col2"))))
                 .withColumn("col3", callUDF("test", (df.col("col3"))));
  or
   DataFrame newDF = df.withColumn("col2", callUDF("test", (df.col("col1"))))
                 .withColumn("col3", callUDF("test", (df.col("col3"))))
                 .withColumn("col5", callUDF("test", (df.col("col5"))))
  or for N columns.

有什么想法吗?

【问题讨论】:

查看***.com/questions/34037889/… 【参考方案1】:

我最终编写了代码来动态生成 SPARK SQL 查询,以便将 UDF 应用于 1 到 N 个列。然后将输入数据帧注册为临时表并使用生成的查询。

【讨论】:

愿意分享代码吗?否则你的回答是没有用的。

以上是关于将 UDF 动态应用于数据框中 N 列中的 1 到 N 列的主要内容,如果未能解决你的问题,请参考以下文章

将函数应用于两列并将输出映射到新列[重复]

将数据解析/反透视到熊猫数据框中的列中

动态填充pyspark数据框中列中的行

如何根据列中的最新日期聚合 pandas 数据框中的行?

将 2 列中的值合并为 pandas 数据框中的单列

将语料库中的名称部分匹配到 Pandas 数据框中另一列中的名称