|
发表于 2023-6-2 17:51:21
|
显示全部楼层
根据错误提示,筛选出来的数据找不到对应的列保存,这是因为原始表格中可能存在其他列,而在筛选后的数据中并不存在这些列名,导致保存时出现了 KeyError 错误。你可以在筛选前,先将原始表格的列名保存下来,然后将该列表作为保留指定列的参数,这样就不会漏掉其他列了。修改后的代码如下所示:
- import os
- import pandas as pd
- # 原始表格文件夹路径
- input_folder = r'G:\2023\777'
- # 保存新表格的文件夹路径
- output_folder = r'G:\2023\555'
- # 获取原始表格文件列表
- input_files = os.listdir(input_folder)
- for file in input_files:
- if file.endswith('.xls'):
- # 构建原始表格文件的完整路径
- file_path = os.path.join(input_folder, file)
-
- # 读取原始表格数据,保留第一行作为标题行
- df = pd.read_excel(file_path, header=0)
-
- # 保存原始表格的列名
- columns_to_keep = df.columns.tolist()
-
- # 筛选出xx社区
- filtered_df = df[df.iloc[:, 6] == 'xx社区']
-
- # 重新排列序号列
- filtered_df.loc[:, '序号'] = range(1, len(filtered_df) + 1)
-
- # 保留原始表格的列名
- filtered_df = filtered_df[columns_to_keep]
-
- # 保留指定列
- columns_to_keep = ['序号', '户主姓名', 'xx社区','金额合计']
- filtered_df = filtered_df[columns_to_keep]
-
- # 创建新表格的文件名
- output_file = os.path.join(output_folder, os.path.splitext(file)[0] + '.xlsx')
-
- # 保存新表格,加上标题行
- with pd.ExcelWriter(output_file) as writer:
- df.to_excel(writer, sheet_name='Sheet1', index=False)
- filtered_df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=1)
复制代码
这样就可以同时保留原表标题,并成功生成新表格了。
(我是他小号,但是他每小时限额到了,我帮忙) |
|