2016-10-12 4 views
0

Ich verwende einige pyspark.sql.functions:Wie extrahiert man den Wert von pyspark.sql.function?

print(ratings.select(mean('rating')).take(1)) 
print(ratings.select(stddev('rating')).take(1)) 

Die Ausgabe lautet:

[Row(avg(rating)=3.581564453029317)] 
[Row(stddev_samp(rating,0,0)=1.1171018453732544)] 

Wie kann ich den Wert extrahieren, so dass ich es einer Variablen zuweisen können, zum Beispiel

mean_ratings = ratings.select(mean('rating')) 

Antwort

2

Take gibt eine Liste der Zeilen zurück. Index in die Liste, um die erste Zeile zu erhalten, dann ziehen Sie das Feld, das Sie suchen:

mean_ratings = ratings.select(mean('rating')).take(1)[0]['avg(rating)'] 
+0

Dank David. Ich dachte darüber nach, etwas zu tun, aber es fühlte sich ein bisschen zerbrechlich an, besonders die stddev-Version. –

+0

Ja, es ist definitiv hacky. Sie können auch eine Zeile mit '.asDict()' in ein Diktat konvertieren. Sie können sich komfortabler/stabiler fühlen, besonders in Situationen, in denen Sie mehr als einen Schlüssel in Ihrer Zeile https://spark.apache.org/docs/2.0.1/api/python/pypark.sql.html#pyspark haben .sql.Row.asDict – David

Verwandte Themen