Удаление несовместимых пробелов в столбцах - PullRequest
0 голосов
/ 13 марта 2020

Мне нужно прочитать файл с несогласованными пробелами в качестве разделителей столбцов. Любые предложения, как я могу прочитать это, используя Python. В конце концов мне нужны эти данные в фрейме данных pyspark.

Содержимое файла выглядит следующим образом:

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

Ответы [ 3 ]

0 голосов
/ 13 марта 2020

Этот формат файла известен как файл фиксированной ширины. pandas имеет функцию, специально предназначенную для чтения файлов этого типа: read_fwf

По умолчанию pandas выводит ширину каждого столбца. Если вы обнаружите, что у него возникли проблемы, вы можете исследовать необязательный параметр colspecs.

Вы можете преобразовать полученный pandas.DataFrame в фрейм данных pyspark, используя:

spark.createDataFrame(pandas_df)

как задокументировано pyspark .

0 голосов
/ 13 марта 2020

В 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|
#+----+-----+-----+----+----+
0 голосов
/ 13 марта 2020

Как упомянуто в этой ссылке Как изменить табуляцию с разделителями-запятыми на pandas Вы можете изменить разделители на Нет или указать c символ в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...