如何在 for 循环中附加 pyspark 数据帧?

How to append a pyspark dataframes inside a for loop?

示例:我有一个 pyspark 数据框:

df=
    x_data  y_data    
    2.5      1.5       
    3.5      8.5
    4.5      89.5
    5.5      20.5

假设我在 for 循环中对 df 的每一列进行一些计算。之后我的最终输出应该是这样的:

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

如何将在每一列上计算的这些结果附加到 for 循环内的同一个 pyspark 输出数据框中?

您可以使用 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)