如何用PySpark实现与Pandas df.min()相同的输出
在PySpark中获取各列单独的最小值/最大值
要实现和Pandas df.min() 一样的各列单独最小值输出,用PySpark的agg()方法配合聚合函数就能搞定,分两种场景:
1. 手动指定列(适合列数少的情况)
先导入PySpark的函数库:from pyspark.sql import functions as F
假设你的Spark DataFrame叫df,要获取指定列的最小值,直接在agg()里传入对应列的min表达式:
# 比如获取age和height列的最小值 df.agg(F.min("age").alias("age"), F.min("height").alias("height")).show()
2. 自动遍历所有列(适合列数多的情况)
如果要一次性获取所有列的最小值,用列表推导式动态生成聚合表达式,不用手动写每一列:
# 生成所有列的min聚合表达式,保留原列名 min_result = df.agg(*[F.min(col).alias(col) for col in df.columns]) # 查看结果,用show()输出Spark格式,或者转成Pandas格式更贴近你要的效果 min_result.show() # 转成Pandas DataFrame,和df.min()的输出结构几乎一致 min_result.toPandas()
示例演示
比如先创建一个测试DataFrame:
from pyspark.sql import SparkSession spark = SparkSession.builder.appName("MinMaxDemo").getOrCreate() data = [("Alice", 25, 160), ("Bob", 30, 175), ("Charlie", 22, 168)] df = spark.createDataFrame(data, ["name", "age", "height"])
运行上面的自动遍历代码后,min_result.toPandas()会输出:
| name | age | height |
|---|---|---|
| Alice | 22 | 160 |
完全对应Pandas df.min()的输出逻辑。如果要获取最大值,把F.min换成F.max即可。
内容的提问来源于stack exchange,提问作者Manoranjini M
相关产品推荐
相关产品推荐

