python - 如何计算pyspark中每行某些列的最大值

标签 python apache-spark pyspark apache-spark-sql

我在 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/

相关文章:

python - 使用 Python 从 HDFS 读取文件时出现连接超时错误

apache-spark - application_(状态:ACCEPTED)的应用程序报告永远不会结束Spark提交(YARN上的Spark 1.2.0)

python-3.x - 从 Spark RDD 中保存的数据中清除无效字符

apache-spark - Spark 写入磁盘,其中 N 个文件少于 N 个分区

在 PySpark 中使用 collect_list 时 Java 内存不足

apache-spark - 如何在 pyspark 流应用程序中使用具有不同主题的两个不同流将数据从 Kafka 存储到 Redis?

python - 如何以类似于 curl 的 --resolve 标志的方式在 python 的请求库中指定 URL 解析?

用于读取文件并获取值的 Python 脚本

python - python 中的推荐引擎 - 合并自定义相似度指标

apache-spark - 我可以使用 spark-submit 发送整个文件夹吗?