【发布时间】:2017-05-25 00:27:27
【问题描述】:
我有一个这样构成的 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 文件并跳过前两行的正确方法是什么?
【问题讨论】:
标签: apache-spark pyspark spark-dataframe pyspark-sql