2017-04-21 18 views
2

私はSP500から505株すべてのデータフレームを取得しました。 asfreq関数を使用して、毎週日曜日の週ごとの値を取得したいと思います。 私はAAPLとMSFTの2つの列を20取引日間だけ使用しているとします。データフレームのasfreq関数が機能しないPython

    AAPL  MSFT 
     Date  
2012-04-05 82.099293 27.453578 
2012-04-09 82.429673 27.087763 
2012-04-10 81.420407 26.539039 
2012-04-11 81.130193 26.434521 
2012-04-12 80.685799 26.983243 
2012-04-13 78.413325 26.835175 
2012-04-16 75.161385 27.070343 
2012-04-17 78.992457 27.383899 
2012-04-18 78.816259 27.122601 
2012-04-19 76.108461 27.009374 
2012-04-20 74.235032 28.237466 
2012-04-23 74.069192 27.976170 
2012-04-24 72.589626 27.801974 
2012-04-25 79.031329 28.045851 
2012-04-26 78.733339 27.967462 
2012-04-27 78.124412 27.854232 
2012-04-30 75.660185 27.889073 
2012-05-01 75.420503 27.880361 
2012-05-02 75.919303 27.697454 
2012-05-03 75.380337 27.662615 

私はasfreq関数をデータフレームで試しています。

df2 = df.asfreq("W-SUN", method="pad") 

それは下部に言う、この巨大なエラーが発生:

TypeError: Cannot compare type 'Timestamp' with type 'str' 

私も試した方法= "ffill"、同じエラーが。 asfreq( "W-SUN")はNaN値のみを返し、asfreq( "W-MON"、method = "pad")も同じエラー「W-SUN」を返しました。

以前はasfreq関数を使用していましたが、これは完全に機能しましたが、現在はありません。何がありますか?どんな助けも非常に高く評価されるでしょう。 DatetimeIndex

+0

'asfreq'は' DatetimeIndex'で動作します。インデックスのdtypeは何ですか? 'asfreq'コールの前に' df.index = pd.to_datetime(df.index) 'を試してください – EdChum

+0

Hey EdChum、返事ありがとうございました!とても親切。これまでと全く同じデータフレームであるSP500のインデックスを使用していたので、何度もうまくいきました。 – MichaelRSF

答えて

1

asfreq作品、エラーがそれはまだstrだことを言っているので、あなたはto_datetimeを使用してdtypeを変換する必要があります。

df.index = pd.to_datetime(df.index) 

asfreqへの呼び出しは、期待どおりに動作するはずです