Как пропустить несколько строк, используя read.csv в PySpark - PullRequest
0 голосов
/ 04 октября 2018

У меня .csv с несколькими столбцами, и я хочу пропустить 4 (или 'n' в целом) строки при импорте этого файла в кадр данных с использованием функции spark.read.csv().У меня есть .csv файл, подобный этому -

ID;Name;Revenue
Identifier;Customer Name;Euros
cust_ID;cust_name;€
ID132;XYZ Ltd;2825
ID150;ABC Ltd;1849

В обычном Python, когда используется функция read_csv(), это просто и может быть сделано с помощью опции skiprow=n, например -

import pandas as pd
df=pd.read_csv('filename.csv',sep=';',skiprows=3) # Since we wish to skip top 3 lines

С PySpark я импортирую этот файл .csv следующим образом -

df=spark.read.csv("filename.csv",sep=';') 
This imports the file as -
ID          |Name         |Revenue
Identifier  |Customer Name|Euros
cust_ID     |cust_name    |€
ID132       |XYZ Ltd      |2825
ID150       |ABC Ltd      1849

Это не правильно, потому что я хочу игнорировать первые три строки.Я не могу использовать опцию 'header=True', потому что она исключит только первую строку.Можно использовать опцию 'comment=', но для этого нужны строки, начинающиеся с определенного символа, а с моим файлом это не так.Я не смог найти ничего в документации .Есть ли способ, которым это может быть достигнуто?

1 Ответ

0 голосов
/ 04 октября 2018

Я не могу найти простое решение для вашей проблемы.Хотя это будет работать независимо от того, как написан заголовок,

df = spark.read.csv("filename.csv",sep=';')\
          .rdd.zipWithIndex()\
          .filter(lambda x: x[1] > n)\
          .map(lambda x: x[0]).toDF()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...