我有一个Spark数据框,我想获取统计数据

stats_df = df.describe(['mycol'])
stats_df.show()


+-------+------------------+
|summary|             mycol|
+-------+------------------+
|  count|               300|
|   mean|              2243|
| stddev|  319.419860456123|
|    min|              1400|
|    max|              3100|
+-------+------------------+


如何使用min max mycol列值提取summaryminmax的值?如何按数字索引进行操作?

最佳答案

好,让我们考虑以下示例:

from pyspark.sql.functions import rand, randn
df = sqlContext.range(1, 1000).toDF('mycol')
df.describe().show()
# +-------+-----------------+
# |summary|            mycol|
# +-------+-----------------+
# |  count|              999|
# |   mean|            500.0|
# | stddev|288.5307609250702|
# |    min|                1|
# |    max|              999|
# +-------+-----------------+


例如,如果要访问有关stddev的行,则只需将其转换为RDD,收集并将其转换为字典,如下所示:

stats = dict(df.describe().map(lambda r : (r.summary,r.mycol)).collect())
print(stats['stddev'])
# 288.5307609250702

关于python - 根据其他列值(PySpark)从DataFrame获取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38602973/

10-10 23:47