我有一個資料框,其中一列包含“鍵=值”格式的多個資訊。幾乎有 30 種不同的“key=value”可以出現在該列中,將使用 4 列進行理解(_age、_city、_sal、_tag)
id name properties
0 A {_age=10, _city=A, _sal=1000}
1 B {_age=20, _city=B, _sal=3000, tag=XYZ}
2 C {_city=BC, tag=ABC}
如何將此字串列轉換為多列?需要為此使用 spark scala 資料框。
預期的輸出是:
id name _age _city _sal tag
0 A 10 A 1000
1 B 20 B 3000 XYZ
2 C BC ABC
uj5u.com熱心網友回復:
簡答
df
.select(
col("id"),
col("name"),
col("properties.*"),
..
)
uj5u.com熱心網友回復:
嘗試這個 :
val s = df.withColumn("dummy", explode(split(regexp_replace($"properties", "\\{|\\}", ""), ",")))
val result= s.drop("properties").withColumn("col1",split($"dummy","=")(0)).withColumn("col1-value",split($"dummy","=")(1)).drop("dummy")
result.groupBy("id","name").pivot("col1").agg(first($"col1-value")).orderBy($"id").show
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/365953.html
