2017-03-23 102 views
2

我有一个数据帧(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'> 

可能有人让我KN和使用以下日志结果请问如何解决这个问题?我尝试使用以下浮动方式进行投射:

df["B"] .astype(float) 

但是无法获得任何工作。任何指导将不胜感激。

谢谢

+0

检查是否有任何非浮点值,如空字符串或非数字字符串 – Glacier11

+1

'math.log'需要单个浮点值。它不适用于熊猫系列对象。 – Craig

+0

你可以尝试转换只是一小部分的数据浮动,看看是否工作 – Glacier11

回答

4

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

0

如果你只是写df["A"].astype(float)你不会改变df。您需要将astype方法调用的输出分配给其他内容,包括使用df['A'] = df['A'].astype(float)的现有系列。此外,您可能希望使用numpy作为@ user3582076建议,或在系列上使用.apply,将今天的值除以昨天的值。

相关问题