我有一個看起來像這樣的資料框:

我想展平barcodetype的欄位StringType,而不是看起來像這樣,barcode同一專案有多個,我希望它重復,例如:
------------------------------------------------------------
|suborder| updated_on | suborder_item_id| barcode |
-------- ------------ ----------------- --------------------
|1 | 123 | 3333 |["123","456","789"] |
-------- ------------ ----------------- --------------------
如果barcode同一資料框中有多個,我希望它重復:
-------- ---------- ---------------- -------
|suborder|updated_on|suborder_item_id|barcode|
-------- ---------- ---------------- -------
| 1| 123| 3333| 123|
| 1| 123| 3333| 456|
| 1| 123| 3333| 789|
-------- ---------- ---------------- -------
非常感謝您的幫助,我已經為此苦苦掙扎了一段時間。
uj5u.com熱心網友回復:
您正在尋找的只是explode功能。
import pyspark.sql.functions as F
……
df = df.select('suborder', 'updated_on', 'suborder_item_id', F.explode('barcode').alias('barcode'))
uj5u.com熱心網友回復:
使用from_json函式將字串化陣列決議為ArrayType然后分解它:
import pyspark.sql.functions as F
df = spark.createDataFrame([
(1, 123, 3333, '["123","456","789"]')
], ["suborder", "updated_on", "suborder_item_id", "barcode"])
df1 = df.withColumn(
"barcode",
F.explode(F.from_json("barcode", "array<string>"))
)
df1.show()
# -------- ---------- ---------------- -------
#|suborder|updated_on|suborder_item_id|barcode|
# -------- ---------- ---------------- -------
#| 1| 123| 3333| 123|
#| 1| 123| 3333| 456|
#| 1| 123| 3333| 789|
# -------- ---------- ---------------- -------
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/416370.html
標籤:
上一篇:按年/月/日劃分增量/火花表有什么好處,而不僅僅是日期?
下一篇:從結構Pyspark的陣列創建列
