我需要一次性读取多个csv文件。现在,这些csv文件可能具有可变的列数和任何顺序。我们要求仅读取csv文件中的特定列。我们该怎么做?我尝试定义自定义架构,但随后我在列中得到了不同的数据。
例如:
CSV文件
ID,名称,地址 我如何仅选择ID和地址列。因为如果我说选择(标识,地址),那么它将在地址栏中给我标识和名称数据。我想在阅读时根据标题名称仅选择ID和Address列。
谢谢, 幼稚的
答案 0 :(得分:2)
您可以遍历文件并创建最终的数据框,例如:
files = ['path/to/file1.csv', 'path/to/file2.csv', 'path/to/file3.csv', 'path/to/file4.csv']
#define the output dataframe's schema column name and type should be correct
schema = t.StructType([
t.StructField("a", t.StringType(), True), StructField("c", t.StringType(), True)
])
output_df = spark.createDataFrame([],schema)
for i,file in enumerate(data):
df = spark.read.csv(file, header=True)
output_df = output_df.union(df.select('a','c'))
output_df.show()
output_df将包含您想要的输出。