###原因と対策、アドバイスをお願いします。
下記の手順において
DataFrameの作成の際にnumpy.datetime64でdate列を作成すると
NaTがあるrowはpandas._libs.tslib.Timestampに変換されてしまうため
indexの参照時にKeyErrorが発生してしまう。
なぜ NaTがあるrowがpandas._libs.tslib.Timestampnに変換されるのでしょうか?
変換されないようにするにはどうしたらよろしいでしょうか?
または、indexに複数の型が混在する下記の状況でもnp.datetime64で参照できる方法はありますか?
よろしくお願いします。
###発生している問題・エラーメッセージ
python
1KeyError: numpy.datetime64('2017-07-19T14:24:07.000000000')
###該当のソースコード
データ作成
python
1import numpy as np 2import pandas as pd 3 4dates = [ 5 np.datetime64('2014-11-09 10:00:00.000000000') 6 , np.datetime64('2015-11-09 10:00:00.000000000') 7 , np.datetime64('2016-11-09 10:00:00.000000000') 8 , np.datetime64('2017-07-19 14:24:07.000000000') 9] 10 11prices = [ 12 2000 13 , 1900 14 , 1800 15] 16 17df = pd.DataFrame([dates, prices], ['date', 'price']).T 18
date price
0 2014-11-09T10:00:00.000000000 2000
1 2015-11-09T10:00:00.000000000 1900
2 2016-11-09T10:00:00.000000000 1800
3 2017-07-19 14:24:07 NaT
python
1type(df.date[0]) #出力 numpy.datetime64 2type(df.date[3]) #出力 pandas._libs.tslib.Timestamp
date列をindexに設定
python
1df = df.set_index('date')
date
2014-11-09T10:00:00.000000000 2000
2015-11-09T10:00:00.000000000 1900
2016-11-09T10:00:00.000000000 1800
2017-07-19 14:24:07 NaT
indexで参照
python
1df.ix[dates[0]] #出力 price 2000 2 # Name: 2014-11-09T10:00:00.000000000, dtype: object 3 4df.ix[dates[1]] #出力 KeyError: numpy.datetime64('2017-07-19T14:24:07.000000000')
###補足情報(言語/FW/ツール等のバージョンなど)
python: 3.5.3
pandas: 0.20.1
anaconda: 3-2.4.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/22 16:02 編集
2017/07/22 16:05
2017/07/22 16:08
2017/07/22 16:21
2017/07/22 17:04