Pandas DataFrame - 当使用ols/线性回归时,'无法将[datetime64 [ns]] astype为[float64]'。

21
我有一个如下的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列。我正在尝试计算Date列与Close列的线性回归:

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个回答

17

您需要:

ADBE['Date'] = ADBE['Date'].values.astype(float)

然后:

ols1 = pd.ols(y=ADBE['Close'], x=ADBE['Date'], intercept=True)

1
我犯了一个错误;对于那些可能犯同样错误的人,请注意不要使用 Series.astype(float)(例如:pd.Series(ADBE['Date'].values).astype(float));请注意 @jezrael 的回答直接在 .values.astype(float) 上使用了 ndarray.astype(float) - Nate Anderson
当我尝试运行以下代码时,出现了错误: TypeError: cannot astype a datetimelike from [datetime64[ns]] to [int32]]df_['Date']=(df['Date'].astype(int)// 10**9).astype('U10')将上述代码更改为以下代码后,问题得到解决:df['Date']=(df['Date'].values.astype(int)// 10**9).astype('U10') - kraftwerk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接