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

Posted

技术标签:

【中文标题】如何在 for 循环中附加 pyspark 数据帧?【英文标题】:How to append a pyspark dataframes inside a for loop? 【发布时间】:2021-02-17 17:31:42 【问题描述】:

示例:我有一个 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

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

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于如何在 for 循环中附加 pyspark 数据帧?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 for 循环中的 .pkl 文件附加到 for 循环中创建的 pandas 数据帧?

Pyspark:在数据帧的不同组上应用 kmeans

附加在 for 循环中生成的 pandas 数据帧

在 for 循环中将数据帧附加在一起

使用 pyspark 在循环中附加 Spark DataFrames 的有效方法

如何在pyspark的循环中合并数据帧