我是新来的火花。我正在编写一个pyspark代码,其中有两个数据帧,例如:
DATAFRAME-1:
NAME BATCH MARKS
A 1 44
B 15 50
C 45 99
D 2 18
DATAFRAME-2:
NAME MARKS
A 36
B 100
C 23
D 67
我希望将输出作为这两个数据框之间的比较,以便可以将计数存储为变量。
例如
improvedStudents = 1(因为D属于第1-15批次,并且他的得分有所提高)
badPerformance = 2(A,B表现不佳,因为它们属于第1-15批之间,并且其得分比以前要小)
neutralPerformance = 1(C,因为即使他的分数下降了,他也属于我们不希望考虑的第45个批次)
这只是我要解决的复杂问题中的一个示例。
谢谢
答案 0 :(得分:0)
如果数据如您的示例中所示,为什么不加入它们并为您拥有的每个指标创建新列:
val df = df1.withColumnRenamed("MARKS", "PRE_MARKS")
.join(df2.withColumnRenamed("MARKS", "POST_MARKS"), Seq("NAME"))
.withColumn("Evaluation",
when(col("BATCH") > 15, lit("neutral"))
.when(col("PRE_MARKS") gt col("POST_MARKS"), lit("bad"))
.when(col("POST_MARKS") gt col("PRE_MARKS"), lit("improved"))
.otherwise(lit("neutral"))
.groupBy("Evaluation")
.count