Как назначить значение переменной как новое значение столбца в фрейме pyspark? - PullRequest
0 голосов
/ 05 февраля 2020

Я присваиваю значение переменной, которая выбирается из фрейма данных следующим образом:

    dfScore =  spark.read.format("csv").option("header", "true").load("data.csv")

    level = dfScore.where((col("Name") == "Rule1")).select(dfScore ["level"])   

Затем у меня есть другой фрейм данных, к которому я должен добавить это значение переменной уровня:

dfJson =  spark.read.format("json").load("/mnt/coi/Rule/Rule1.json")

 ScoreCal1 = dfJson.where((dfJson["Amount"] > 20000)).select(dfJson["*"])

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

ScoreCal1 = ScoreCal1.withColumn("Level",lit(level)))

Как назначить переменную в качестве нового значения столбца в фрейме данных pyspark?

1 Ответ

1 голос
/ 05 февраля 2020

из вашего кода, я заметил, уровень, кажется, датафрейм, а не переменная. Следовательно, он выдает ошибку.

Так как вы указали, как показано ниже, он возвращает фрейм данных только без переменной:

level =dfScore .where((col("DataField") == "Amount")).select(dfScore ["level"])

Однако из вашего кода я понимаю, что вы хотите присвоить значение для нового столбца «Уровень» со значением старого уровня столбца, если он удовлетворяет следующему условию col («DataField») == «Amount» иначе Null. Если это так, вы можете написать свой код, используя когда условие, как показано ниже:

ScoreCal1 = ScoreCal1.withColumn("Level",when(col("DataField") == "Amount",dfScore ["level"]))
...