Stacey Stacey -4 years ago 742
Python Question

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

I have a dataframe (df) that looks like:

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

For the entire time-series I'm trying to divide today's value by yesterdays and log the result using the following:

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

However I get the following error:

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

Could someone let me know how to fix this please? I've tried to cast as float using:

df["B"] .astype(float)

But can't get anything to work. Any guidance would be much appreciated.


Answer Source

You can use numpy.log instead. Math.log is expecting a single number, not array.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download