Pandas DataFrame - '不能在使用 ols/线性回归时将日期时间从 [datetime64[ns]] 输入到 [float64]'
Posted
技术标签:
【中文标题】Pandas DataFrame - \'不能在使用 ols/线性回归时将日期时间从 [datetime64[ns]] 输入到 [float64]\'【英文标题】:Pandas DataFrame - 'cannot astype a datetimelike from [datetime64[ns]] to [float64]' when using ols/linear regressionPandas DataFrame - '不能在使用 ols/线性回归时将日期时间从 [datetime64[ns]] 输入到 [float64]' 【发布时间】:2017-03-20 02:55:02 【问题描述】:我有一个如下的DataFrame:
Ticker Date Close
0 ADBE 2016-02-16 78.88
1 ADBE 2016-02-17 81.85
2 ADBE 2016-02-18 80.53
3 ADBE 2016-02-19 80.87
4 ADBE 2016-02-22 83.80
5 ADBE 2016-02-23 83.07
...等等。 Date
列是问题所在。我正在尝试使用Close
列对Date
列进行线性回归:
ols1 = pd.ols(y=ADBE['Close'], x=ADBE['Date'], intercept=True)
我收到以下错误:
TypeError: cannot astype a datetimelike from [datetime64[ns]] to [float64]
我尝试了多种方法来消除此错误,例如:
dates_input = ADBE['Date'].values.astype('datetime64[D]')
dates_input = ADBE['Date'].values.astype('float')
第二次dates_input
尝试将类型返回为pandas.core.series.Series
,但我仍然收到错误消息。
有谁知道如何让Date
列工作并摆脱这个TypeError?
【问题讨论】:
【参考方案1】:你需要:
ADBE['Date'] = ADBE['Date'].values.astype(float)
然后:
ols1 = pd.ols(y=ADBE['Close'], x=ADBE['Date'], intercept=True)
【讨论】:
我搞错了;对于可能犯同样错误的其他人;注意不要使用Series.astype(float)
(如;pd.Series(ADBE['Date'].values).astype(float)
;注意@jezrael的回答使用ndarray.astype(float)
(直接在.values.astype(float)
上)以上是关于Pandas DataFrame - '不能在使用 ols/线性回归时将日期时间从 [datetime64[ns]] 输入到 [float64]'的主要内容,如果未能解决你的问题,请参考以下文章