我有一个结构化的这样一个CSV文件:如何在使用PySpark作为数据框读取CSV文件时跳过行?
Header
Blank Row
"Col1","Col2"
"1,200","1,456"
"2,000","3,450"
我在阅读本文件中的两个问题。
- 我想忽略页眉和忽略值内
- 的逗号的空白行不是分隔
这里是我的尝试:
df = sc.textFile("myFile.csv")\
.map(lambda line: line.split(","))\ #Split By comma
.filter(lambda line: len(line) == 2).collect() #This helped me ignore the first two rows
然而,这是行不通的,因为值内的逗号被当作分隔符来读取,并且len(line)
返回4而不是2.
我尝试另一种方法:
data = sc.textFile("myFile.csv")
headers = data.take(2) #First two rows to be skipped
的想法是,然后使用滤波器,而不是读出的标头。但是,当我试图打印标题时,我得到了编码值。
[\x00A\x00Y\x00 \x00J\x00u\x00l\x00y\x00 \x002\x000\x001\x006\x00]
什么是读取CSV文件并跳过前两行的正确方法?
不错@zlidime! – titipata
csv。读取器抛出错误:行包含空字节 –
我通过调用'csv.reader([l.replace('\ 0','')in line],delimiter =',',quotechar ='''')来修复它。 ' –