import pandas as pd
import os
# 设置文件夹路径和输出Excel文件名
folder_path = r"E:\CHM\DATE2\0716\TEMP\N15"
output_file = r"E:\CHM\DATE2\0716\CUT\N15.xlsx"
# 获取文件夹下所有csv文件的文件名
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
# 创建一个空的DataFrame来存储所有数据
output_data = pd.DataFrame()
# 循环读取每个csv文件,将第四列添加到输出数据中
for csv_file in csv_files:
# 获取csv文件名作为列名
column_name = os.path.splitext(csv_file)[0]
# 读取csv文件并取出第四列
data = pd.read_csv(os.path.join(folder_path, csv_file), usecols=[3])
# 将第四列添加到输出数据中,以csv文件名作为列名
output_data[column_name] = data.iloc[:, 0]
# 将输出数据保存到Excel文件中
output_data.to_excel(output_file, index=False)
这个代码可以实现一个文件夹,将里面的所有文件按列进行排序,并输出到一个新文件里。我现在有好多个文件夹(N01-N69)70个,我想加一行代码,实现所有文件夹的自动处理,一个文件夹对应一个EXCEL,名称是文件夹的名称。
该回答引用ChatGPT
请测试
这个代码会对 input_folder_path 目录下的所有文件夹进行处理,并将处理后的数据分别保存到 output_folder_path 目录下以对应文件夹名命名的 Excel 文件中。
import pandas as pd
import os
# 设置文件夹路径和输出Excel文件夹路径
input_folder_path = r"E:\CHM\DATE2\0716\TEMP"
output_folder_path = r"E:\CHM\DATE2\0716\CUT"
# 获取所有文件夹的名称
folder_names = [f for f in os.listdir(input_folder_path) if os.path.isdir(os.path.join(input_folder_path, f))]
# 循环处理每个文件夹
for folder_name in folder_names:
# 设置当前文件夹的路径和输出Excel文件名
folder_path = os.path.join(input_folder_path, folder_name)
output_file = os.path.join(output_folder_path, folder_name + ".xlsx")
# 获取文件夹下所有csv文件的文件名
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
# 创建一个空的DataFrame来存储所有数据
output_data = pd.DataFrame()
# 循环读取每个csv文件,将第四列添加到输出数据中
for csv_file in csv_files:
# 获取csv文件名作为列名
column_name = os.path.splitext(csv_file)[0]
# 读取csv文件并取出第四列
data = pd.read_csv(os.path.join(folder_path, csv_file), usecols=[3])
# 将第四列添加到输出数据中,以csv文件名作为列名
output_data[column_name] = data.iloc[:, 0]
# 将输出数据保存到Excel文件中
output_data.to_excel(output_file, index=False)
参考GPT和自己的思路,可以使用os模块中的listdir()方法来获取目录下所有文件夹的名称,然后再对每个文件夹进行处理。可以将原来的代码封装成一个函数,然后再调用这个函数即可,以下是代码示例:
import pandas as pd
import os
def process_folder(folder_path):
# 设置输出Excel文件名
output_file = os.path.join(folder_path, f"{os.path.basename(folder_path)}.xlsx")
# 获取文件夹下所有csv文件的文件名
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
# 创建一个空的DataFrame来存储所有数据
output_data = pd.DataFrame()
# 循环读取每个csv文件,将第四列添加到输出数据中
for csv_file in csv_files:
# 获取csv文件名作为列名
column_name = os.path.splitext(csv_file)[0]
# 读取csv文件并取出第四列
data = pd.read_csv(os.path.join(folder_path, csv_file), usecols=[3])
# 将第四列添加到输出数据中,以csv文件名作为列名
output_data[column_name] = data.iloc[:, 0]
# 将输出数据保存到Excel文件中
output_data.to_excel(output_file, index=False)
# 设置文件夹路径
root_folder = r"E:\CHM\DATE2\0716\TEMP"
# 循环处理每个文件夹
for folder_name in os.listdir(root_folder):
if folder_name.startswith('N'):
folder_path = os.path.join(root_folder, folder_name)
process_folder(folder_path)
在这个示例中,我们首先定义了一个process_folder()函数,用于处理单个文件夹中的所有CSV文件并将它们输出到一个Excel文件中。然后,在主程序中,我们定义了一个root_folder变量,用于存储所有文件夹所在的根目录,然后循环处理每个文件夹。我们使用os.listdir()方法来获取根目录下的所有文件夹,然后用startswith()方法来过滤出以"N"开头的文件夹。对于每个符合条件的文件夹,我们调用process_folder()函数进行处理,输出一个Excel文件。