TypeError: withColumn () принимает ровно 3 аргумента (дано 2) - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь создать в столбцах данных 2 столбца, которые являются результатом вычитания значений 2 столбцов и добавления значений этих 2 столбцов.

Это код, который я ввел.

dfPrep = dfCleanYear.withColumn(df.withColumn("NuevaCol", df["AverageTemperature"] - df["AverageTemperatureUncertainty"])).withColumn(df.withColumn("NuevaCol", df["AverageTemperature"] + df["AverageTemperatureUncertainty"]))
dfPrep.show()

И это ошибка.

TypeError: withColumn () принимает ровно 3 аргумента (дано 2)

Вы знаете, какой аргумент отсутствует?

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Мы можем переписать ваш код:

a = df.withColumn("NuevaCol", df["AverageTemperature"] - df["AverageTemperatureUncertainty"]) 
b = df.withColumn("NuevaCol", df["AverageTemperature"] + df["AverageTemperatureUncertainty"])
dfPrep = dfCleanYear.withColumn(a).withColumn(b)

Первые две строки в порядке.Ошибка исходит от 3-го.С этой строкой есть две проблемы:

  • Синтаксис withColumn должен быть dataframe.withColumn("New_col_name", expression), здесь в скобках есть только один аргумент
  • Здесь вы хотите взятьстолбец из одного кадра данных df и добавление к другому кадру данных dfCleanYear.Итак, вы должны использовать join, а не withColumn.

Что-то нравится (не проверено):

df = df.withColumn("NuevaCol_A", df["AverageTemperature"] - df["AverageTemperatureUncertainty"]) 
df = df.withColumn("NuevaCol_B", df["AverageTemperature"] + df["AverageTemperatureUncertainty"])
dfPrep = dfCleanYear.join(df, "KEY")
0 голосов
/ 19 мая 2018

Не ясно, какую версию Spark / версию вы используете.Но в документации DataBricks обычно об этом ясно, первым параметром в вызове .withColumn должен быть DataFrame.

Пример: https://docs.azuredatabricks.net/spark/1.6/sparkr/functions/withColumn.html

Синтаксис:

withColumn (df, «newColName», colExpr)

Параметры:

df: любой кадр данных SparkR

newColName: String,имя нового столбца, который будет добавлен

colExpr: выражение столбца

...