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

Sta*_*cey 9 python python-3.x

我有一个数据帧(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
Run Code Online (Sandbox Code Playgroud)

对于整个时间序列,我试图将今天的值除以昨天,并使用以下内容记录结果:

df["B"] = math.log(df["A"] / df["A"].shift(1))
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

TypeError: cannot convert the series to <class 'float'>
Run Code Online (Sandbox Code Playgroud)

有人能让我知道如何解决这个问题吗?我试图使用以下方式转换为float:

df["B"] .astype(float)
Run Code Online (Sandbox Code Playgroud)

但无法得到任何工作.任何指导都将非常感谢.

谢谢

use*_*076 18

您可以使用numpy.log.Math.log期待一个数字,而不是数组.


小智 15

您可以使用 lambda 运算符将您的函数应用于 Pandas 数据框或系列。更具体地说,如果要将列上的每个元素转换为浮点数,您应该这样做:

df['A'].apply(lambda x: float(x))
Run Code Online (Sandbox Code Playgroud)

这里 lambda 运算符将获取该列上的值(作为 x)并将它们作为浮点值返回。