2017-10-04 6 views
1

私はfindatapyを使用してDukasCopyからFXレートを取得しています。パッケージは素晴らしいです。これは私が使用しているスクリプトです:私は時間ごとに周波数を持っている点が唯一興味パンダで特定の頻度にDatetimeIndexベクトル

from findatapy.market import Market, MarketDataRequest, MarketDataGenerator 

market = Market(market_data_generator=MarketDataGenerator()) 

md_request = MarketDataRequest(start_date='01 Feb 2017', finish_date='03 Feb 2017', category='fx', fields=['bid', 'ask'], freq='tick', data_source='dukascopy', tickers=['EURUSD']) 

df = market.fetch_market(md_request) 

print(df) 
print(len(df)) 
print(df.index) 
print(len(df.index)) 

(00:00:00 1時00分00秒、2時00分00秒というように)。これは、フィルタリング後、1日に24ポイントしか取得できないことを意味します。

今、結果として得られるのはこれです。

DF:

enter image description here

df.index:私が今したいのですが、私はそれに、にある方法について完全に無知だ何

enter image description here

時間ごとの頻度を使用してインデックスをフィルタリングし、対応するポイントを選択します。

私はすべきことは、希望のインデックスを持ったパンダを使ってアレイを作成し、それを使ってメインアレイをスライスすることですが、どうしたらいいですか? pandas.date_rangeでこの「望ましい」配列を作成できますか?あるいはこれを行うもっと簡単な方法がありますか?

お時間をいただきありがとうございます。あなただけのpd.TimeGrouperオブジェクトを使用して、各時間のグループのために、このような何か最初の行を抽出することができます

+0

を、これは私が探していた結果でした。私はインデックスベクトル(これは私の 'Date'ベクトル)を分割したいと思っていますが、もっと簡単に思えるので、私はその方法を見つけるつもりです。どうもありがとう! –

+0

分割方法を説明できますか?私はその点ではっきりしていない。 –

+0

@cᴏʟᴅs '' df.index 'の結果のみが表示された場合は、曜日+空白スペース+時間が表示されます。私はそれを別々に「日」と「時間」に分割したいと思います。 –

答えて

1

:これは素晴らしい:)を働いcᴏʟᴅsᴘᴇᴇᴅ@

df = df.groupby(pd.TimeGrouper('1H')).head(1) 
+0

@COLDSPEEDもう一度ありがとう、私はdf.resample( '1H')に気付いたので、私は2行目を取るでしょう。それは私が望むものではありません。私はdf.groupby(pd.TimeGrouper( '1H')))を使用して取得したものですが、毎時間に最も近い時間がほしいです。head(1) –

+1

@AquilesPáezよろしくお願いします。私は両方を追加しました。なぜなら、私はあなたが望むものを100%確信していないからですまた、インデックスを分割する場合は、 'd = df.index.day;を実行するだけで済みます。 h = df.index.hour'となります。 –

関連する問題