代码描述:两个文件夹中分别存放有75个csv文件,两个文件夹里的每个文件都是列数相同,行数不同,将两个文件夹对应编号的两个csv文件上下拼接起来,按照这样的方法最终输出75个文件。输出文件的格式有要求,为纬度_经度,均需保留四位小数。 纬度和经度需要读取另外一个文件夹中的一个csv文件的第1列和第2列。
需要注意的是,这样输出的文件里面会将经纬度也添加到文件里面,如果不需要的话,还需要批量删除那两列。
import os
import pandas as pd
# 需要拼接的文件夹的路径
folder1 = r'G:\graduate_data\merged_output_2015'
folder2 = r'G:\graduate_data\merged_output_2016'
output_folder = r'G:\graduate_data\output'
os.makedirs(output_folder, exist_ok=True)
# 经度和纬度信息
reference_file_path = 'G:/graduate_data/grid.csv'
reference_data = pd.read_csv(reference_file_path, header=None, nrows=75)
latitudes = reference_data.iloc[:, 1]
longitudes = reference_data.iloc[:, 2]
# 遍历文件夹每个文件
for i in range(0, 75): # 文件夹中有75个文件
file1 = os.path.join(folder1, f'merged_output_{i}.csv')
file2 = os.path.join(folder2, f'merged_output_{i}.csv')
data1 = pd.read_csv(file1, header=None)
data2 = pd.read_csv(file2, header=None)
# 拼接
merged_data = pd.concat([data1, data2], axis=0)
expanded_data = pd.concat([merged_data] * 2, axis=1)
expanded_data['Latitude'] = latitudes[i]
expanded_data['Longitude'] = longitudes[i]
# 合并数据保存为 CSV ,文件名data_纬度_经度
output_file = os.path.join(output_folder, f'data_{latitudes[i]:.4f}_{longitudes[i]:.4f}.csv')
expanded_data.to_csv(output_file, index=False, header=False)