TypeError: no se puede convertir la serie a

Tengo un dataframe (df) que se parece a:

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 

Para toda la serie de tiempo, estoy tratando de dividir el valor de hoy por los días de ayer y registrar el resultado utilizando lo siguiente:

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

Sin embargo me sale el siguiente error:

 TypeError: cannot convert the series to  

¿Alguien podría decirme cómo arreglar esto por favor? He intentado lanzar como flotante usando:

 df["B"] .astype(float) 

Pero no puede hacer que nada funcione. Cualquier orientación sería muy apreciada.

Gracias

Puede utilizar numpy.log en su lugar. Math.log está esperando un solo número, no una matriz.

Si solo escribe df["A"].astype(float) no cambiará df . Necesitaría asignar la salida de la llamada al método astype a otra cosa, incluso a la serie existente usando df['A'] = df['A'].astype(float) . También es posible que desee utilizar numpy como sugiere @ user3582076, o usar .apply en la serie que resulta de dividir el valor de hoy por el de ayer.