如何在PySpark中使用read.csv跳过多行

时间:2018-10-04 10:36:43

标签: csv apache-spark pyspark header

我的.csv的列很少,使用'n'函数将此文件导入数据帧时,我希望跳过4(或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='选项,但为此需要以特殊字符开头的行,而我的文件则不是这样。我在documentation中找不到任何内容。有什么办法可以实现?

1 个答案:

答案 0 :(得分:1)

我找不到您问题的简单解决方案。尽管无论标题如何编写都可以使用

df = spark.read.csv("filename.csv",sep=';')\
          .rdd.zipWithIndex()\
          .filter(lambda x: x[1] > n)\
          .map(lambda x: x[0]).toDF()