以下是使用 pandas 组合大型 csv 文件的优雅方法。该技术是每次迭代将定义为 CHUNK_SIZE 的行数载入内存,直到完成。这些行将以“附加”模式附加到输出文件中。
import pandas as pd
CHUNK_SIZE = 50000
csv_file_list = ["file1.csv", "file2.csv", "file3.csv"]
output_file = "./result_merge/output.csv"
for csv_file_name in csv_file_list:
chunk_container = pd.read_csv(csv_file_name, chunksize=CHUNK_SIZE)
for chunk in chunk_container:
chunk.to_csv(output_file, mode="a", index=False)
但是,如果你的文件包含头部信息,那么在接下来的文件中跳过头部信息是有道理的,除了第一个文件外。重复的头部信息是不可预期的。在这种情况下,可以采用以下解决方案:
import pandas as pd
CHUNK_SIZE = 50000
csv_file_list = ["file1.csv", "file2.csv", "file3.csv"]
output_file = "./result_merge/output.csv"
first_one = True
for csv_file_name in csv_file_list:
if not first_one:
skip_row = [0]
else:
skip_row = []
chunk_container = pd.read_csv(csv_file_name, chunksize=CHUNK_SIZE, skiprows = skip_row)
for chunk in chunk_container:
chunk.to_csv(output_file, mode="a", index=False)
first_one = False