我正在尝试将文本文件读取到PySpark数据框架中。文本文件有不同数量的空格。所以一行可以是这样的:
Ryan A. Smith>>>Welder>>>>>>3200 Smith Street>>>>>99999
用空格代替箭头
我需要分隔它,但我不一定知道这个命令。我知道它们总是被至少2个空格隔开,所以正则表达式看起来很完美。但是,我无法在PySpark中找到这样做的方法。
我们可以尝试在这里使用split
来生成您想要的列:
df_new = df.withColumn('name', split(df['col'], '>+').getItem(0))
.withColumn('occupation', split(df['col'], '>+').getItem(1))
.withColumn('address', split(df['col'], '>+').getItem(2))
.withColumn('number', split(df['col'], '>+').getItem(3))
假设上面显示的当前文本位于名为col
的列中。
您可以尝试先创建一个列名称的列表,然后应用split
,因为它接受regex模式作为分隔符。
from pyspark.sql import functions as F
cols = ['name', 'job', 'address', 'id']
df = df.select(
[F.split('col_name', ' {2,}')[i].alias(c) for i, c in enumerate(cols)]
)