【问题标题】:How to dynamically create columns from function arguments如何从函数参数动态创建列
【发布时间】:2021-02-27 08:19:28
【问题描述】:

我正在编写一个函数并希望传递它的参数以在数据框中创建列。

例如;

def whatever(datain, knots):
  knots_length = len(knots)
  knot_names = ["knot_" + str(num1) for num1 in range(1, knots_length+1)]

  datain = datain.withColumn("var"+knot_names[1], whatever.....)

通过这样做,我没有看到最后一列“var_knot_1”被创建。你知道如何正确完成这项工作吗?非常感谢。

【问题讨论】:

  • Spark 数据帧是不可变的。换句话说,函数内部的datain 与函数外部的datain 不同。所以你需要在函数内部return它,并将它分配给你原来的datain

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


【解决方案1】:

你需要返回数据框:

# Initialise dataframe
df = ...

def whatever(datain, knots):
  knots_length = len(knots)
  knot_names = ["knot_" + str(num1) for num1 in range(1, knots_length+1)]

  datain = datain.withColumn("var"+knot_names[1], whatever.....)
  return datain

df = whatever(df, knots)

【讨论】:

    猜你喜欢
    • 2019-05-09
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2013-10-03
    • 1970-01-01
    • 2023-01-04
    相关资源
    最近更新 更多