我有多个具有相同格式的.csv
文件。它们的名称就像file_#.csv
。它们的标题位于第一个文件(file_1.csv
)中。
我使用spark
阅读此文件,其中的代码如下:
spark.read.csv('*.csv', header=True)
当我显示结果时,标头不是第一个文件的标头,而是数据行之一。 我们怎么能说出那个头在哪个文件中?
答案 0 :(得分:0)
如果您知道具有标题行的文件,则可以通过从标题文件中读取模式,然后使用相同的模式来读取所有其他文件来生成模式。
df1 = spark.read.csv('a.csv', header=True)
header = spark.read.csv('a.csv', header=False).first()
df2 = spark.read.schema(df1.schema).csv(*.csv, header=False).filter(lambda line: line != header)
代码还从数据中删除标题行。如果可以使用很少的字段来区分标头和数据,则可以改进过滤器功能。