如何将生成的单个CSV文件按文件名存入对应新建文件夹
解决方案
以下是修正后的完整脚本,解决了文件夹创建与文件路径的问题,同时修复了原脚本中的语法错误:
import os import pandas as pd # 读取源数据文件 data = pd.read_csv(r'Filename.csv') datab = pd.read_csv(r'Filename2.csv') # 根目标目录,建议使用绝对路径更稳妥,例如 r'C:\users\destination' root_path = r"users\destination" # 用for循环替代while,更简洁地遍历0到110的行索引 for i in range(111): # 构造当前行对应的子文件夹路径 folder_path = os.path.join(root_path, str(i)) # 创建文件夹,exist_ok=True避免重复创建时抛出异常 os.makedirs(folder_path, exist_ok=True) # 提取单行数据并复制,避免后续修改触发警告 rowa = data.loc[[i], :].copy() rowb = datab.loc[[i], :].copy() # 调整数据格式 rowa.loc[i, 'S.No'] = 'POINT' rowb.loc[i, 'S.No'] = 'POINT' rowa['ID'] = 1 rowb['ID'] = 2 rowa['value'] = ' ' rowb['value'] = ' ' # 筛选指定列,修复原脚本的括号错误(需用方括号而非圆括号) rowa = rowa[['S.No', 'ID', 'value', 'A', 'B', 'C']] rowb = rowb[['S.No', 'ID', 'value', 'A', 'B', 'C']] # 构造输出文件的完整路径,指向对应子文件夹 output_file = os.path.join(folder_path, f'output{i}.csv') # 写入CSV文件,先写入rowa,再追加rowb rowa.to_csv(output_file, header=False, index=False) rowb.to_csv(output_file, mode='a', header=False, index=False)
关键修改说明
- 路径拼接:使用
os.path.join处理路径,避免手动拼接斜杠导致的跨平台兼容问题,同时确保输出文件直接存入对应子文件夹。 - 文件夹创建优化:给
os.makedirs添加exist_ok=True参数,防止重复运行脚本时因文件夹已存在报错。 - 语法错误修复:补全
data.loc[[i],:]的右括号;选择列时使用方括号(DataFrame列索引语法)替代原脚本的圆括号(函数调用语法)。 - 循环优化:用
for i in range(111)替代while循环,代码更简洁易读,直接覆盖0到110的行索引。 - 警告规避:提取单行数据时添加
.copy(),避免后续修改数据触发SettingWithCopyWarning。
内容的提问来源于stack exchange,提问作者Raam_Kafka
相关产品推荐
相关产品推荐

