我在 pyspark 中使用 sqlContext.sql 函数读取了一个数据框。
这包含 4 个数字列,其中包含每个客户端的信息(这是键 ID)。
我需要计算每个 client
的最大值并将此值加入数据框:
+--------+-------+-------+-------+-------+
|ClientId|m_ant21|m_ant22|m_ant23|m_ant24|
+--------+-------+-------+-------+-------+
| 0| null| null| null| null|
| 1| null| null| null| null|
| 2| null| null| null| null|
| 3| null| null| null| null|
| 4| null| null| null| null|
| 5| null| null| null| null|
| 6| 23| 13| 17| 8|
| 7| null| null| null| null|
| 8| null| null| null| null|
| 9| null| null| null| null|
| 10| 34| 2| 4| 0|
| 11| 0| 0| 0| 0|
| 12| 0| 0| 0| 0|
| 13| 0| 0| 30| 0|
| 14| null| null| null| null|
| 15| null| null| null| null|
| 16| 37| 29| 29| 29|
| 17| 0| 0| 16| 0|
| 18| 0| 0| 0| 0|
| 19| null| null| null| null|
+--------+-------+-------+-------+-------+
在这种情况下,客户端六
的最大值是23
,客户端十
是30
. null
在新列中自然为 null。
请帮我演示如何进行此操作。
最佳答案
有一个函数:pyspark.sql.functions.greatest
。
>>> df = spark.createDataFrame([(1, 4, 3)], ['a', 'b', 'c'])
>>> df.select(greatest(df.a, df.b, df.c).alias("greatest")).collect()
[Row(greatest=4)]
示例直接取自 docs .
(Least 正好相反。)
关于python - 如何计算pyspark中每行某些列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44833836/