Ich bin neu in Python und PySpark. Ich habe einen Datenrahmen in PySpark wie die folgenden:Erstellen Sie eine Spalte in einem PySpark-Datenframe mit einer Liste, deren Indizes in einer Spalte des Datenrahmens vorhanden sind
## +---+---+------+
## | x1| x2| x3 |
## +---+---+------+
## | 0| a | 13.0|
## | 2| B | -33.0|
## | 1| B | -63.0|
## +---+---+------+
Ich habe ein Array: arr = [10, 12, 13]
Ich möchte eine Spalte x4 in dem Datenrahmen erstellen, so dass es sollte habe die entsprechenden Werte aus der Liste basierend auf den Werten von x1 als Indizes. Der letzte Dataset sollte wie folgt aussehen:
## +---+---+------+-----+
## | x1| x2| x3 | x4 |
## +---+---+------+-----+
## | 0| a | 13.0| 10 |
## | 2| B | -33.0| 13 |
## | 1| B | -63.0| 12 |
## +---+---+------+-----+
Ich habe versucht, den folgenden Code verwenden, um zu erreichen:
df.withColumn("x4", lit(arr[col('x1')])).show()
aber ich erhalte eine Fehlermeldung:
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
Ist Kann ich das irgendwie effizient erreichen?