#dataframe #apache-spark #pyspark #pyspark-dataframes
#фрейм данных #apache-spark #pyspark #pyspark-фреймы данных
Вопрос:
пример: у меня есть фрейм данных pyspark как:
df=
x_data y_data
2.5 1.5
3.5 8.5
4.5 89.5
5.5 20.5
Допустим, нужно выполнить некоторые вычисления для каждого столбца в df, которые я выполняю внутри цикла for. После этого мой конечный результат должен быть таким:
df_output=
cal_1 cal_2 Cal_3 Cal_4 Datatype
23 24 34 36 x_data
12 13 18 90 x_data
23 54 74 96 x_data
41 13 38 50 x_data
53 74 44 6 y_data
72 23 28 50 y_data
43 24 44 66 y_data
41 23 58 30 y_data
Как мне добавить эти результаты, вычисленные для каждого столбца, в тот же фрейм выходных данных pyspark внутри цикла for?
Ответ №1:
Вы можете использовать functools.reduce
для объединения списка фреймов данных, созданных на каждой итерации.
Что-то вроде этого :
import functools
from pyspark.sql import DataFrame
output_dfs = []
for c in df.columns:
# do some calculation
df_output = _ # calculation result
output_dfs.append(df_output)
df_output = functools.reduce(DataFrame.union, output_dfs)