PySpark最小值或最大值,带有动态列

bqujaahr  于 2023-01-01  发布在  Spark
关注(0)|答案(1)|浏览(111)

我需要在pyspark中给予maxest一个动态参数但它似乎不接受,

column_names=['c_'+str(x) for x in range(800)]
train_df=spark.read.parquet(train_path).select(column_names).withColumn('max_values',least(col_names))

那么,不使用RDD而仅使用 Dataframe 的方法是什么呢

r3i60tvu

r3i60tvu1#

你的问题很含糊。
但是,我假设train_df中的列数为n,并且您希望每行都有maximum值。
如果不是这样的话,给予一个输入和输出df的例子。

train_df=spark.createDataFrame([ (1,      1,        5,       2,      3),
(1,      1,        0,       2,      3),
(2,      3,        1,       7,      7),
(3,      6,        1,       3,      3),
(3,      6,        5,       3,      3)] ,
  ('col0' ,   'col1'   , 'col2'   , 'col3' ,   'col4' ))
  

column_names=['col'+str(x) for x in range(4)]

train_df.withColumn('max_values',array_max(array(*[x for x in column_names]))).show()

|col0|col1|col2|col3|col4|max_values|
+----+----+----+----+----+----------+
|   1|   1|   5|   2|   3|         5|
|   1|   1|   0|   2|   3|         2|
|   2|   3|   1|   7|   7|         7|
|   3|   6|   1|   3|   3|         6|
|   3|   6|   5|   3|   3|         6|
+----+----+----+----+----+----------+

相关问题