报错unsupported operand type(s) for +: 'DatetimeArray' and 'str'的解决求助
解决Pandas中"unsupported operand type(s) for +: 'DatetimeArray' and 'str'"错误
我一眼就看出问题出在哪了——你在代码里把同一个变量Dataset既用来存文件路径,又用来存读取后的Pandas DataFrame,导致后续的字符串拼接操作完全搞错了对象!
先看你出错的核心代码片段:
Dataset = "/content/Meteo.csv" # 这里把Dataset重新赋值成了DataFrame对象 Dataset = pd.read_csv('Meteo.csv', encoding='latin-1', parse_dates=[['DATE', 'TIME']]) # 现在Dataset是DataFrame,和字符串"Demand.xlsx"用+拼接当然报错 Solar = pd.read_excel(Dataset + "Demand.xlsx")
问题原因
当你执行pd.read_csv后,Dataset已经从最初的字符串路径变成了Pandas DataFrame实例,你试图把DataFrame和字符串做加法,这属于类型不匹配,所以抛出了那个错误。
修复方案
把文件路径和DataFrame用不同的变量名分开,避免变量覆盖。这里有两种可行的写法:
写法1:明确管理文件路径
如果你的文件都在/content/目录下,可以专门用一个变量存路径前缀:
# 单独定义目录路径 data_dir = "/content/" # 读取CSV到DataFrame,用新的变量名 meteo_data = pd.read_csv(data_dir + 'Meteo.csv', encoding='latin-1', parse_dates=[['DATE', 'TIME']]) print(meteo_data) # 正确拼接Excel文件路径并读取 solar_data = pd.read_excel(data_dir + "Demand.xlsx") solar_data.head()
写法2:直接读取同目录文件
如果两个文件都在当前工作目录下,直接写文件名更简单:
# 读取CSV到DataFrame meteo_data = pd.read_csv('Meteo.csv', encoding='latin-1', parse_dates=[['DATE', 'TIME']]) print(meteo_data) # 直接读取同目录下的Excel文件 solar_data = pd.read_excel("Demand.xlsx") solar_data.head()
额外提示
养成给变量起有意义名字的习惯,比如用meteo_data存气象数据的DataFrame,用data_dir存路径,这样不仅能避免这类低级错误,代码可读性也会高很多。
内容的提问来源于stack exchange,提问作者Ili
相关产品推荐
相关产品推荐

