現在、以下のDFから日時の条件に一致する値を取得したいのですが、欠損しており取得できません。
欠損の場合に、次の行のデータを取得したいです。
python
1 index time open high low close 2101352 145494 2014-02-27 13:30:00+00:00 91.458 91.786 91.458 91.782 3101353 145495 2014-02-27 13:45:00+00:00 91.783 91.836 91.708 91.726 4101354 145504 2014-02-27 16:00:00+00:00 91.694 91.727 91.689 91.707 5101355 145505 2014-02-27 16:15:00+00:00 91.706 91.766 91.673 91.711 6......
検索のコードは以下です。
python
1time=2014-02-27T14:00:00.000000000 2 3print(type(time)) 4>><class 'numpy.datetime64'> 5 6rate = df[df.time == pd.to_datetime(time).strftime('%Y-%m-%d %H:%M:00.00')]["open"].values[0]
結果はSeries([], Name: open, dtype: float64)のため一致無しとなります。
この場合に、次の16時のopenのデータ(91.694)を取得したいです。
お分かりの方お教えいただきたく思います。
よろしくお願いいたします。
すみません。情報が不足していたため追記させて頂きます。
追記:
FXのバックテストを作成しており、2つの同じ構成のDFがあり、
DF1の2014年2月27日14:00の時間から、DF2の2014年2月27日14:15のデータを取得しようとしています。
timeに格納しているのは、以下のデータになります。
import dask.dataframe as dd
import pandas as pd
DF1 = dd.read_csv("DF1.csv", blocksize=None, encoding='UTF-8').compute()
DF1['time'] = pd.to_datetime(DF1['time'])
DF1 = DF1.set_index('time').resample(axis).agg(
{'open': 'first', 'high': 'max', 'low': 'min', 'close': 'last', 'volume': 'sum'}).reset_index()
for idx in range(DF1.shape[0])
time=DF1["time"][idx:idx+1]
rate = df[df.time == pd.to_datetime(time).strftime('%Y-%m-%d %H:%M:00.00')]["open"].values[0]
再追記:
DF1tDF2では欠損の有無が違うため、インデックスは同じではないです。
例えば、
DF1には、インデックス:10の2014年2月27日10:00のデータがあっても、
DF2では2014年2月27日10:00のデータを持っていないため、インデックス10は2014年2月27日10:15のデータである
ということがあります。
その為、DF1のインデックスからDF2の同じインデックスを検索できないです。
回答2件
あなたの回答
tips
プレビュー