减去pyspark中的两行,并将ans附加为新行



我有下面的pyspark数据帧

stat   col_A    col_B       col_C     col_D   
count   14       14          14 14      14
75%    4        4001       160987      49  
50%    3        3657       131225      38  

我想从75%的行中减去50%的行,并在同一数据帧中添加新行结果,如下所示:

stat   col_A    col_B       col_C     col_D   
count   14       14          14 14      14
75%    4        4001       160987      49  
50%    3        3657       131225      38  
result   1        344        26762       11

这并不像人们想象的那么容易,因为需要对行而不是列进行操作。尝试下面的代码,使用union:再添加一行

import pyspark.sql.functions as F
result = df.union(
df.agg(
F.lit('result').alias('stat'), 
*[
(
F.max(F.when(F.col('stat') == '75%', F.col(c))) - 
F.max(F.when(F.col('stat') == '50%', F.col(c)))
).alias(c) 
for c in df.columns[1:]
]
)
)
result.show()
+------+-----+-----+------+-----+
|  stat|col_A|col_B| col_C|col_D|
+------+-----+-----+------+-----+
| count|   14|   14|  1414|   14|
|   75%|    4| 4001|160987|   49|
|   50%|    3| 3657|131225|   38|
|result|    1|  344| 29762|   11|
+------+-----+-----+------+-----+

相关内容

最新更新