|
发表于 2024-3-31 19:33:16
|
显示全部楼层
非常抱歉,我在代码中的一个错误。正确的代码是将`year`变量定义为列表,然后再连接为字符串。请修改代码中的`year = str(self.max).split("-")`这一行为`year = "-".join(str(self.max).split("-")[:2])`。修改后的代码如下所示:
- import os
- import pandas as pd
- import openpyxl
- class InsertCsv:
- def __init__(self):
- self.csv_path = os.path.join(os.getcwd(), "csv")
-
- def insert(self, df):
- self.file, self.min, self.max, self.sum = df
-
- year = "-".join(str(self.max).split("-")[:2]) # 提取年份作为文件名
- file_name = year + ".xlsx"
- file_path = os.path.join(self.csv_path, file_name)
-
- self.is_file_exist()
-
- if not os.path.isfile(file_path):
- # 文件不存在,创建新文件并写入数据
- self.file.to_excel(file_path, sheet_name="Sheet1", index=False, encoding="utf-8")
- else:
- # 文件已存在,读取原有数据并合并
- existing_data = pd.read_excel(file_path)
- new_data = pd.concat([existing_data, self.file], ignore_index=True)
-
- # 将合并后的数据写入文件
- with pd.ExcelWriter(file_path, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
- new_data.to_excel(writer, sheet_name="Sheet1", index=False, encoding="utf-8")
-
- def is_file_exist(self):
- if not os.path.isdir(self.csv_path):
- os.makedirs(self.csv_path)
复制代码
这次修改应该能够解决报错问题,同时能够按照年份将数据写入对应的Excel文件中。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|