删除列中不一致的空格

2024-09-29 21:22:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须读取一个具有不一致空格作为列分隔符的文件。任何关于如何使用Python阅读本文的建议。最终,我需要将这些数据放在pyspark数据帧中

文件内容如下:

AutoID               AutoGUID                             ServerID         ReceivedUTC
244021856            B22AD225-1373-4F13-9ADE-38963BA67835 GOEQXPWEPO020    2019-11-02 13:57:25.973

Tags: 文件数据内容建议pyspark空格分隔符serverid
3条回答

如本链接所述How to change tab delimited in to comma delimited in pandas 您可以将分隔符更改为“无”或更改为文本中的特定字符 比如:

pd.read_csv(filename,sep=None)  

file = pd.read_csv(filename, sep="\t")

请随意查看文档,因为它可能会给您一些提示https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

Python中,我们可以使用正则表达式split,我们基于不一致的空间分割数据

import re
re.split("\\s+",'a b   c')
['a', 'b', 'c']

In Pyspark:

#sample data
$ cat i.txt
one two   three   four   five
six    seven    eight nine ten

cols=["col1","col2","col3","col4","col5"]
spark.sparkContext.textFile("<file_path>/i.txt").map(lambda x:re.split("\\s+",x)).toDF(cols).show()

#creating dataframe on the file with inconsistent spaces.
#+  +  -+  -+  +  +
#|col1| col2| col3|col4|col5|
#+  +  -+  -+  +  +
#| one|  two|three|four|five|
#| six|seven|eight|nine| ten|
#+  +  -+  -+  +  +

这种文件格式称为固定宽度文件pandas有一个专门用于读取此类文件的函数:^{}

默认情况下,pandas将推断每列的宽度。如果您发现这样做有问题,您可以研究colspecs可选参数

您可以使用以下方法将生成的pandas.DataFrame转换为pyspark数据帧:

spark.createDataFrame(pandas_df)

作为documented by pyspark

相关问题 更多 >

    热门问题