【发布时间】:2021-04-19 01:54:55
【问题描述】:
我有一个如下所示的数据框 (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)
但是什么都做不了。
【问题讨论】:
-
检查是否有任何非浮点值,如空字符串或非数字字符串
-
math.log需要一个浮点值。它不适用于 pandas Series 对象。 -
你能不能试着把一小部分数据转换成浮点数,看看是否可行
-
为什么不 df["B"] = (df["A"] / df["A"].shift(1)).apply(lambda x: math.log(x)) ?
标签: python python-3.x