发布于2023-03-21 14:23 阅读(462) 评论(0) 点赞(7) 收藏(0)
我有一张桌子
--------------------|
Val
--------------------|
1, M A ,HELLO,WORLD |
2, M 1A,HELLO WORLD |
---------------------
我想拆分上面的数据框,以便它包含下面的三列。
----------------------
a | b | c |
----------------------
1 | M A | HELLO,WORLD|
1 | M 1A| HELLO WORLD|
----------------------
I have used the below code, but it does not work as expected. Is there a way to contain all characters after 5 characters in column c, etc. and character 2-5 in column b?
df = df.withColumn('Splitted', F.split(hadf37dr_df['Val'], ',')).withColumn('a', F.col('Splitted')[0]).withColumn('b', F.col('Splitted')[1]).withColumn('c', F.col('Splitted')[2])
如果你想在PySpark中这样做,你需要F.concat_ws连接列表的元素并将其作为字符串返回,你需要F.slice将列表的元素从'head'中切片为指定的'length'。因为您需要设置长度,所以您需要F.size可以拥有的数组的大小。
(
df
.withColumn('Splitted', F.split(df['val'], ','))
.withColumn('a', F.col('Splitted')[0])
.withColumn('b', F.col('Splitted')[1])
.withColumn(
'c',
F.concat_ws(
',',
F.slice('Splitted', 3, F.size('Splitted') - 2)))
).show()
输出:
+-------------------+--------------------+---+-----+-----------+
| val| Splitted| a| b| c|
+-------------------+--------------------+---+-----+-----------+
|1, M A ,HELLO,WORLD|[1, M A , HELLO,...| 1| M A |HELLO,WORLD|
|2, M 1A,HELLO WORLD|[2, M 1A, HELLO ...| 2| M 1A|HELLO WORLD|
+-------------------+--------------------+---+-----+-----------+
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/1944123/79f1710963b3d0c0ed59/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!