Как добавить фреймы данных pyspark внутри цикла for?

#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)