-1
Ich habe den folgenden Code gefunden, um n Zeilen aus dem Datenframe nach unique_id gruppiert auszuwählen.Scala-Code in PySpark konvertieren
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.row_number
val window = Window.partitionBy("userId").orderBy($"rating".desc)
dataframe.withColumn("r", row_number.over(window)).where($"r" <= n)
Ich habe versucht, die folgenden:
from pyspark.sql.functions import row_number, desc
from pyspark.sql.window import Window
w = Window.partitionBy(post_tags.EntityID).orderBy(post_tags.Weight)
newdata=post_tags.withColumn("r", row_number.over(w)).where("r" <= 3)
ich die folgende Fehlermeldung erhalten:
AttributeError: 'function' object has no attribute 'over'
Bitte helfen Sie mir auf der gleichen.
Die $ zeigt Fehler. Aber ich fand Antwort von einem anderen Beitrag. 'Von pyspark.sql.window Import Fenster aus pyspark.sql.functions importieren Rang, col Fenster = Window.partitionBy (df [ 'user_id']). OrderBy (df [ 'Score']. Ab()) df.select ('*', rank(). Über (window) .alias ('rank')) .filter (col ('rank') <= 2) .show() ' –
In der' wo ($ "r" <= n) 'Sie haben das' $ 'entfernt, aber nicht durch etwas ersetzt. Versuchen Sie, zu 'col ('r') <= 3 'zu wechseln. – Shaido