You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark如何将for循环输出的空行追加到DataFrame中

数据集图片

可以看到我们有两个DataFrame currdf 和 hist_df,逻辑已在代码中定义,预期输出为:

输出示意图

从预期输出中可以看到,每次迭代都会得到黄色标记的DataFrame,该临时表始终只有单行或者为空,我们需要将其持续追加到最终DataFrame中,如果临时DataFrame(tmp)为空,则仅存储实际的pcode值,其余字段留空。

复现代码

import pyspark
import os
import warnings
warnings.filterwarnings('ignore')
import pyspark.sql.functions as sf
from pyspark.sql import *
import pyspark
from pyspark.sql import SparkSession
spark=SparkSession.builder.appName('Pycode2Pyspark_RProducer').getOrCreate()
spark
currdf = spark.createDataFrame([(66, "d","4"), 
                                (67, "a", "0"), 
                                (70, "b", "4"), 
                                (71, "d", "4"),
                                (45, "x", "3"),
                                (48, "y", "3")],
                                ("id", "pcode", "amt"))
currdf.show()

hist_df = spark.createDataFrame([(66, "d",4,1), 
                                (67, "a", 0,0), 
                                (70, "b", 4,1), 
                                (71, "a", 9,0),
                                (45, "c", 2,1),
                                (12, "d", 7,0),
                                (37, "b", 3,0),
                                (89, "c", 1,0),
                                (11, "e", 9,1),
                                (79, "f", 6,1)],
                                ("id", "pcode", "amt","status1"))
hist_df.show()

import functools
from pyspark.sql import DataFrame
dataCollect = currdf.collect()
output_dfs = []
for row in dataCollect:
    temp_var =  row['pcode']
    print(temp_var)    
    temp_filter =  hist_df.where((hist_df['pcode'] == temp_var)) # Filter 
    temp_filter.show()
    tmp = temp_filter.groupby('pcode').agg(sf.sum('amt').alias('amt'),sf.sum('status1').alias('status1'))
    tmp = tmp.withColumn('status', sf.when((sf.col('amt')> 3) & (sf.col('status1')> 0),'Yes').otherwise('No'))
    tmp.show()
    output_dfs.append(tmp)
df_output = functools.reduce(DataFrame.union, output_dfs)

内容的提问来源于stack exchange,提问作者Nabi Shaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 23:36:03