【问题标题】: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?

【问题讨论】:

    标签: python pandas dataframe time-series linear-regression


    【解决方案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)上)
    猜你喜欢
    • 2018-11-22
    • 2020-08-20
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多