Ich habe einen Datenrahmen, die wie unten einige Spalten:Wie eine Zelle/s-Wert ändern, basierend auf einem Zustand, in Pyspark Datenrahmen
category| category_id| bucket| prop_count| event_count | accum_prop_count | accum_event_count ----------------------------------------------------------------------------------------------------- nation | nation | 1 | 222 | 444 | 555 | 6677
Diese Datenrahmen von 0 Zeilen beginnen und jede Funktion von meinem Skript fügt eine Zeile dazu.
Es gibt eine Funktion, die basierend auf der Bedingung 1 oder 2 Zellenwerte ändern muss. Wie macht man das?
Code:
schema = StructType([StructField("category", StringType()), StructField("category_id", StringType()), StructField("bucket", StringType()), StructField("prop_count", StringType()), StructField("event_count", StringType()), StructField("accum_prop_count",StringType())])
a_df = sqlContext.createDataFrame([],schema)
a_temp = sqlContext.createDataFrame([("nation","nation",1,222,444,555)],schema)
a_df = a_df.unionAll(a_temp)
Zeilen aus einer anderen Funktion hinzugefügt:
a_temp3 = sqlContext.createDataFrame([("nation","state",2,222,444,555)],schema)
a_df = a_df.unionAll(a_temp3)
nun zu ändern, Ich versuche, ein mit einer Join-Bedingung.
a_temp4 = sqlContext.createDataFrame([("state","state",2,444,555,666)],schema)
a_df = a_df.join(a_temp4, [(a_df.category_id == a_temp4.category_id) & (some other cond here)], how = "inner")
Aber dieser Code funktioniert nicht. Ich erhalte einen Fehler:
+--------+-----------+------+----------+-----------+----------------+--------+-----------+------+----------+-----------+----------------+ |category|category_id|bucket|prop_count|event_count|accum_prop_count|category|category_id|bucket|prop_count|event_count|accum_prop_count| +--------+-----------+------+----------+-----------+----------------+--------+-----------+------+----------+-----------+----------------+ | nation| state| 2| 222| 444| 555| state| state| 2| 444| 555| 666| +--------+-----------+------+----------+-----------+----------------+--------+-----------+------+----------+-----------+----------------+
Wie behebt man das? Die korrekte Ausgabe sollte 2 Zeilen haben und die zweite Zeile sollte einen aktualisierten Wert haben