开发股票预测仪表盘时遇Timestamp转float类型错误的解决咨询
解决Timestamp无法转换为float导致MinMaxScaler归一化失败的问题
我刚看了你的代码和错误信息,问题出在你对Date列的处理上——你本来试图把Timestamp转成时间戳(float类型),但后面的循环又把原始的Timestamp值重新赋值回去了,导致final_dataset里混着Timestamp类型的数据,而MinMaxScaler只能处理数值型数据,所以才触发了这个错误。
问题代码的核心错误点
你这段代码里的循环完全覆盖了之前的Timestamp转float操作:
new_dataset['Date'] = new_dataset['Date'].apply(pd.Timestamp.timestamp) for i in range(0,len(data)): new_dataset["Date"][i]=data['Date'][i] # 这里把原始Timestamp对象重新赋值回去,之前的转换白做了! new_dataset["Close"][i]=data["Close"][i]
修正后的完整代码
import pandas as pd import numpy as np from sklearn.preprocessing import MinMaxScaler # 1. 排序原始数据(这一步逻辑没问题) data = df.sort_index(ascending=True, axis=0) # 2. 直接构建新数据集,同时完成Timestamp到float时间戳的转换 # 用pandas向量操作替代循环,高效且避免赋值错误 new_dataset = pd.DataFrame({ 'Date': data['Date'].apply(pd.Timestamp.timestamp), # 一次性把所有Timestamp转成float类型的时间戳 'Close': data['Close'] }) # 3. 准备用于归一化的数据集(此时Date和Close都是数值类型) final_dataset = new_dataset.values # 4. 划分训练集和验证集(逻辑不变) train_data = final_dataset[0:987, :] valid_data = final_dataset[987:, :] # 5. 可选:设置直观的日期索引(如果后续需要用日期查看数据) new_dataset.index = pd.to_datetime(data['Date']) new_dataset.drop("Date", axis=1, inplace=True) # 6. 执行归一化(现在数据集全是数值,不会再触发类型错误) scaler = MinMaxScaler(feature_range=(0,1)) scaled_data = scaler.fit_transform(final_dataset) # 7. 构建训练序列(逻辑不变) x_train_data, y_train_data = [], [] for i in range(60, len(train_data)): x_train_data.append(scaled_data[i-60:i, 0]) y_train_data.append(scaled_data[i, 0]) x_train_data, y_train_data = np.array(x_train_data), np.array(y_train_data) x_train_data = np.reshape(x_train_data, (x_train_data.shape[0], x_train_data.shape[1], 1))
关键修改说明
- 替换循环赋值:用pandas的向量操作
data['Date'].apply(pd.Timestamp.timestamp)一次性完成转换,既高效又避免了循环覆盖的错误。 - 验证数据类型:你可以在转换后添加
print(new_dataset.dtypes),确认Date列是float64类型,Close列是数值类型(如float64/int64),确保MinMaxScaler能正常处理。 - 优化索引设置:如果需要用日期作为数据集索引,建议保留原始的datetime类型,这样后续查看数据会更直观。
新手友好提示
- 尽量避免用
for循环操作DataFrame的行,pandas的内置向量操作不仅效率更高,还能减少这类低级赋值错误。 - 遇到数据类型相关错误时,先打印
df.dtypes检查每一列的类型,这是快速定位问题的有效方法。
内容的提问来源于stack exchange,提问作者Eddie Chinea
相关产品推荐
相关产品推荐

