我需要在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 的方法是什么呢
r3i60tvu1#
你的问题很含糊。但是,我假设train_df中的列数为n,并且您希望每行都有maximum值。如果不是这样的话,给予一个输入和输出df的例子。
train_df
n
maximum
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| +----+----+----+----+----+----------+
1条答案
按热度按时间r3i60tvu1#
你的问题很含糊。
但是,我假设
train_df
中的列数为n
,并且您希望每行都有maximum
值。如果不是这样的话,给予一个输入和输出df的例子。