2017-03-23 7 views
2

私がどのように見えるデータフレーム(DF)持っている:私は昨日のことで、今日の値を分割しようとしている全体の時系列についてTypeError例外:<クラスのフロート '>に直列に変換することはできません

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」は単一の浮動小数点値を想定しています。それはpandas Seriesオブジェクトでは機能しません。 – Craig

+0

データのほんの一部を浮動小数点に変換し、それが動作するかどうかを調べることができます – Glacier11

答えて

4

代わりにnumpy.logを使用できます。 Math.logは配列ではなく単一の数値を必要としています。

0

df["A"].astype(float)と書いても、dfは変更されません。 astypeメソッド呼び出しの出力を、df['A'] = df['A'].astype(float)を使用する既存のシリーズを含む何か他のものに割り当てる必要があります。また、numpyを@ user3582076のように使用するか、今日の値を昨日までに分割した結果のシリーズに.applyを使用することもできます。

関連する問題