使用LinearRegression模型时遇TypeError:无法转换Timestamp为float
解决线性回归中Timestamp类型数据的报错问题
你遇到的TypeError是因为训练特征x里包含了Timestamp(日期时间)类型的列,线性回归模型仅支持数值型输入,无法直接处理日期时间对象。以下是几种可行的解决方法:
方法1:转换为时间差数值(适用于日期仅表示先后顺序的场景)
把日期转换为与最早日期的天数差,转为纯数值:import pandas as pd # 确保日期列是datetime类型(如果还不是的话) df['Date'] = pd.to_datetime(df['Date']) # 计算从最早日期开始的天数差 df['Date'] = (df['Date'] - df['Date'].min()).dt.days方法2:提取时间特征(适用于日期包含周期规律的场景)
从日期中提取年、月、日、星期等数值特征,替代原日期列:import pandas as pd df['Date'] = pd.to_datetime(df['Date']) # 提取时间特征 df['Year'] = df['Date'].dt.year df['Month'] = df['Date'].dt.month df['Day'] = df['Date'].dt.day df['Weekday'] = df['Date'].dt.weekday # 删除原日期列,重新定义训练特征 x = df.drop(['Order Qty', 'Date'], axis=1)方法3:直接删除日期列(如果日期对预测目标无意义)
如果日期列和订单数量没有关联,直接从训练特征中移除:x = df.drop(['Order Qty', 'Date'], axis=1)
处理完数据后,重新执行训练代码即可:
lm = LinearRegression() lm.fit(x, y)
内容的提问来源于stack exchange,提问作者anjali pakmode
相关产品推荐
相关产品推荐

