非常抱歉,给你带来困扰。这个错误是因为openpyxl库默认不允许向已存在的Sheet写入数据。可以将代码中 ...
file_name = year + ".xlsx"
TypeError: can only concatenate list (not "str") to list laiyuanjie 发表于 2024-03-31 19:32
file_name = year + ".xlsx"
TypeError: can only co ...
非常抱歉,我在代码中的一个错误。正确的代码是将`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(, 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 小助理,如未能正确解答您的问题,请继续追问。 <class 'pandas._libs.tslibs.timestamps.Timestamp'>
我的一个日期格式是这个。。。我要取它的年怎么取 laiyuanjie 发表于 2024-03-31 21:25
我的一个日期格式是这个。。。我要取它的年怎么取
如果你的日期格式是`2024-01`,你可以使用以下方法提取年份:date = "2024-01"
year = date.split("-")
print(year)这样,`print(year)`的输出结果将为`2024`。你可以将这段代码集成到你的程序中以获取日期的年份。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-31 21:25
如果你的日期格式是`2024-01`,你可以使用以下方法提取年份:这样,`print(year)`的输出结果将为`2024` ...
AttributeError: 'Timestamp' object has no attribute 'split' laiyuanjie 发表于 2024-03-31 21:26
AttributeError: 'Timestamp' object has no attribut ...
抱歉,我犯了一个错误。根据您的错误信息,看起来您使用的是`Timestamp`对象,而不是字符串对象,因此无法直接使用`split`方法。您可以尝试使用`year`属性来提取年份。请尝试以下代码:
date = pd.Timestamp("2024-01")
year = date.year
print(year)
这样,`print(year)`将输出`2024`,您可以将这段代码集成到您的程序中以获取日期的年份。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
1
[2]