TypeError:无法将序列转换为<class'float'>

2024-04-25 11:09:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框(df)看起来像:

date                 A
2001-01-02      1.0022
2001-01-03      1.1033
2001-01-04      1.1496
2001-01-05      1.1033

2015-03-30    126.3700
2015-03-31    124.4300
2015-04-01    124.2500
2015-04-02    124.8900

在整个时间序列中,我试图用昨天除以今天的值,并使用以下方法记录结果:

df["B"] = math.log(df["A"] / df["A"].shift(1))

但是,我得到以下错误:

TypeError: cannot convert the series to <class 'float'>

有人能告诉我怎么解决这个问题吗?我试着用以下方法来铸造浮子:

df["B"] .astype(float)

但什么都做不到。任何指导都将不胜感激。

谢谢


Tags: 数据方法logdfdateshift错误记录
2条回答

您可以改用numpy.log。Math.log需要一个数字,而不是数组。

如果你只是写df["A"].astype(float),你就不会改变df。您需要将astype方法调用的输出分配给其他对象,包括使用df['A'] = df['A'].astype(float)的现有序列。另外,您可能希望按照@user3582076的建议使用numpy,或者在将今天的值除以昨天的值得到的序列上使用^{}

相关问题 更多 >