Скажем, у меня есть фрейм данных:
myGraph=spark.createDataFrame([(1.3,2.1,3.0),
(2.5,4.6,3.1),
(6.5,7.2,10.0)],
['col1','col2','col3'])
Я хочу добавить новый строковый столбец, чтобы он выглядел так:
from pyspark.sql.functions import lit
myGraph=myGraph.withColumn('rowName',lit('xxx'))
До сих пор все значения в rowName равны «xxx». Но я не знаю, как добавить новые значения столбца («col1», «col2», «col3») в rowName?
@Suresh Привет, я просто поместил имена столбцов в виде строкового столбца и поместил их в столбец имени строки.
хорошо, тогда какое имя столбца поместить в каждую строку, все имена столбцов объединены или каждая строка должна иметь определенное имя столбца на основе какой-либо логики?
имя первого столбца находится в первой строке, имя второго столбца — во второй строке. в этом случае
Вы можете создать случайное целочисленное значение (1-N), используя встроенную функцию rand()
и вспомогательную функцию udf для создания новой строки следующим образом:
val randColumnUDF = udf((rand: Long) => s"X${rand}")
val N = 10000
df.withColumn("rand", randColumnUDF(rand() * N)).show(false)
+----+
|rand|
+----+
|X1 |
|X8 |
|X6 |
|... |
+----+
Приведенный выше код добавит случайное число от 1 до 10000 к X, производя значения: X1, X23,... и т.д.
Как вы выбираете для каждой строки, какой столбец будет использоваться в
rowname
?