明白啦,鱼儿,这个错误提示说找不到文件或者目录。我们需要确保输入文件路径是正确的,同时注意文件路径中的一些可能的错误。让我们再来检查一下,并处理文件路径的问题。
以下是完整的代码示例,确保读取和处理多个Excel文件,并将小表格合并成一个带有共同抬头的大表格:
import pandas as pd
import os
# 从Excel文件中提取小表格
def extract_tables_from_excel(file_path, sheet_name='Sheet1'):
df = pd.read_excel(file_path, sheet_name=sheet_name, header=0)
tables = []
temp_df = []
for _, row in df.iterrows():
if row.isnull().all(): # 判断空行
if temp_df:
tables.append(pd.DataFrame(temp_df))
temp_df = []
else:
temp_df.append(row)
if temp_df:
tables.append(pd.DataFrame(temp_df))
return tables
# 合并所有小表格
def merge_tables(tables, common_header):
merged_table = pd.DataFrame(columns=common_header)
empty_row = pd.Series([None] * len(common_header), index=common_header)
for table in tables:
table.columns = common_header
merged_table = pd.concat([merged_table, table, pd.DataFrame([empty_row])], ignore_index=True)
return merged_table
# 主函数
def main(input_files, output_file, sheet_name='Sheet1'):
all_tables = []
common_header = None
for file in input_files:
if not os.path.isfile(file):
print(f"File not found: {file}")
continue
tables = extract_tables_from_excel(file, sheet_name)
if common_header is None:
common_header = tables[0].columns.tolist()
all_tables.extend(tables)
final_merged_table = merge_tables(all_tables, common_header)
final_merged_table.to_excel(output_file, index=False)
print(f'Saved merged table to {output_file}')
input_files = [
r'D:\path\to\your\first_excel_file.xlsx',
r'D:\path\to\your\second_excel_file.xlsx'
]
output_file = r'D:\path\to\your\output_file.xlsx'
if __name__ == "__main__":
main(input_files, output_file)
确保:
1. 文件路径是正确的,且存在。
2. `input_files`列表中的路径用双反斜杠(`\\`),或前面加上`r`表示原始字符串。
3. 你有适当的权限访问这些文件。
执行这个脚本,它会读取指定的Excel文件,提取小表格,并合并到一个Excel文件中。同时,确保所有表格共用相同的抬头,并用空行隔开各个小表格。
希望这样能解决你的问题,小鱼跃龙门,顺利完成任务!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |