Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于其他列值从DataFrame获取值(PySpark)_Python_Apache Spark_Dataframe_Pyspark_Apache Spark Sql - Fatal编程技术网

Python 基于其他列值从DataFrame获取值(PySpark)

Python 基于其他列值从DataFrame获取值(PySpark),python,apache-spark,dataframe,pyspark,apache-spark-sql,Python,Apache Spark,Dataframe,Pyspark,Apache Spark Sql,我有一个Spark数据框,我想得到统计数据 stats_df = df.describe(['mycol']) stats_df.show() +-------+------------------+ |总结|麦可尔| +-------+------------------+ |计数| 300| |平均值| 2243| |标准差319.419860456123| |最低1400| |最大值3100| +-------+------------------+ 如何使用摘要minmax列值提取m

我有一个Spark数据框,我想得到统计数据

stats_df = df.describe(['mycol'])
stats_df.show()
+-------+------------------+
|总结|麦可尔|
+-------+------------------+
|计数| 300|
|平均值| 2243|
|标准差319.419860456123|
|最低1400|
|最大值3100|
+-------+------------------+

如何使用
摘要
min
max
列值提取
mycl
min
max
的值?如何用数字索引?< /P> < P> OK,让我们考虑下面的例子:

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

您可以轻松地从该数据帧上的select分配变量

x = stats_df.select('mycol').where('summary' == 'min')

我已经回答了这个问题@eliasah可以在这里提供Python版本的解决方案吗?我很难翻译您的解决方案,因为我不知道Scala。好的,我已经在下面写了一个答案!如果它解决了您的问题,请接受并投票:)