簡體   English   中英

從DataFrame獲取基於其他列值的值(PySpark)

[英]Getting a value from DataFrame based on other column value (PySpark)

我有一個Spark數據框,我想得到統計數據

stats_df = df.describe(['mycol'])
stats_df.show()
+-------+------------------+
|summary|             mycol|
+-------+------------------+
|  count|               300|
|   mean|              2243|
| stddev|  319.419860456123|
|    min|              1400|
|    max|              3100|
+-------+------------------+

如何使用summary min max列值提取mycolminmax 我如何通過數字索引來做到這一點?

好吧,讓我們考慮以下示例:

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

您可以輕松地從該數據幀上的選擇中分配變量。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM