我很難將帶有分隔符“”(多個空格)的文本資料檔案拆分為資料框列。我加載的資料檔案如下所示:
results1.show()
--------------------
| all|
--------------------
|1 hjvh hjk 9 gkk|
|2 yjg vv 87 9bh |
|3 kjn 90j jn kjn|
|4 hb jkbkj j jb |
|.... |
|.... |
|.... |
|9997 jn kjn kjn jkn|
|9998 njkj jn8 98 in|
|9999 nkj kjnkn kjnk|
我希望它像這樣分成 2 個單獨的列:
| No| Address |
------- ------------------|
| 1| hjvh hjk 9 gkk|
| 2| yjg vv 87 9bh |
| 3| kjn 90j jn kjn|
| 4| hb jkbkj j jb |
| ..|
| ..|
| ..|
| 9997| jn kjn kjn jkn|
| 9998| njkj jn8 98 in|
| 9999| nkj kjnkn kjnk|
uj5u.com熱心網友回復:
您可以使用split.
df.withColumn('all', f.expr("split(all, '[ ]{2,}')")) \
.select(f.col('all')[0], f.col('all')[1]) \
.toDF('No', 'Address').show()
---- --------------
| id| value|
---- --------------
| 1|hjvh hjk 9 gkk|
| 2|yjg vv 87 9bh |
| 3|kjn 90j jn kjn|
| 4|hb jkbkj j jb |
|9997|jn kjn kjn jkn|
|9998|njkj jn8 98 in|
|9999|nkj kjnkn kjnk|
---- --------------
uj5u.com熱心網友回復:
您想在第一次space使用正則運算式環顧時拆分列。
有關詳細說明,請參閱此答案。不同之處在于您的分隔符是space (\s)
results1.withColumn("Temp", split($"all", "(?<=^[^\\s]*)\\s"))
.withColumn("No", $"Temp"(0))
.withColumn("Address", $"Temp"(1))
.drop("all","Temp")
.show()
輸出
---- --------------------
| No| Address|
---- --------------------
| 1| hjvh hjk 9 gkk|
| 2| yjg vv 87 9bh |
| 3| kjn 90j jn kjn|
| 4| hb jkbkj j jb...|
|9997| jn kjn kjn jkn|
|9998| njkj jn8 98 in|
|9999| nkj kjnkn kjnk|
---- --------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/400120.html
標籤:斯卡拉 阿帕奇火花 分裂 apache-spark-sql
