2017-11-24 10 views
0

私は古いスクリプトを持っており、それが完璧に動作するために使用され、それがダニ取り(入札と尋ねる)のデータと、次のように、パンダ.resample.aggを使用してOHLCデータにそれを回すために設計されました:パンダCONCATとOHLCの問題

df = pd.DataFrame(list(MDB.CHART.find())) 
DF = df[['dt','bid','ask']] 
DF = DF.set_index('dt') 

DB = DF['bid'].resample('2T').agg({ 'openbid' : 'first', 
            'highbid' : 'max', 
            'lowbid' : 'min', 
            'closebid': 'last'}) 

DA = DF['ask'].resample('2T').agg({ 'openask' : 'first', 
            'highask' : 'max', 
            'lowask' : 'min', 
            'closeask': 'last'}) 

dg = pd.concat([DB, DA], axis = 1) 

And it would produce the following DataFrame layout: 

dt openbid highbid lowbid closebid openask highask lowask closeask 
.... 
.... 

しかし、私は(正確に同じデータを持つ)同じスクリプトを実行すると、今、私は次を得る:私は集まる

        bid  ask 
     dt         
closeask 2015-08-19 06:00:00  NaN 1.10619 
     2015-08-19 06:02:00  NaN 1.10636 
     2015-08-19 06:04:00  NaN 1.10646 
     2015-08-19 06:06:00  NaN 1.10657 
     2015-08-19 06:08:00  NaN 1.10649 
...        ...  ... 
openbid 2015-08-20 13:28:00 1.11661  NaN 
     2015-08-20 13:30:00 1.11683  NaN 
     2015-08-20 13:32:00 1.11684  NaN 
     2015-08-20 13:34:00 1.11697  NaN 
     2015-08-20 13:36:00 1.11673  NaN 

[7592 rows x 2 columns] 

、またはパンダは(再び)resampleaggが変更されていることを前提としてい機能?誰かが自分の杖を振って、私の頭を文書の近くに置くという手間を省くことができますか?

ありがとうございました。

ps。私が以下を使用するとき

df = (DF.resample('2T').agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'})) 
I am getting a future warning: 

FutureWarning: using a dict with renaming is deprecated and will be removed in a future version 

しかし、ドキュメントにはまだ何もありません!

+0

は、DBとDAマルチインデックスはありますか?また、 'agg'を使った辞書の使用法は、将来のバージョンでは削除される予定ですので、仮想envを作成してコードと同じpythonバージョンを残すようにしてください。 – DJK

+0

@ djk47463返信用に歓声を言います。これはリアルタイムのチャーティングでそれを洞察しているので残念ですが、個々の列から新しいDataFrameを作成する必要があるため、オーバーヘッドが大きくなります。質問は心配しないでください。私は最後に何かを刻む過程にあります。 – ajsp

答えて

0

だから今から私たちは辞書にリネームとして、使用する場合は、次の入札を使用してデータを依頼する必要がありますにはすぐに減価償却される。

db = DF.bid.resample('2T').ohlc().add_suffix('bid') 
    da = DF.ask.resample('2T').ohlc().add_suffix('ask') 
    df = pd.concat([db, da], axis = 1) 

df.head(3) 

        openbid highbid lowbid closebid openask highask lowask closeask 
dt                       
2015-08-19 06:00:00 1.10586 1.10620 1.10558 1.10615 1.10587 1.10623 1.10560 1.10619 
2015-08-19 06:02:00 1.10615 1.10650 1.10611 1.10634 1.10618 1.10652 1.10614 1.10636 
2015-08-19 06:04:00 1.10634 1.10674 1.10623 1.10645 1.10637 1.10676 1.10624 1.10646 
+1

あなたのケースの名前を変更するのではなく、https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.add_prefix.htmlを使用 – Wen

+0

@Wenは、代わりに 'add_suffix'を使用するように提案しました。' DF.bid.resample( '2T')。ohlc()。add_suffix( 'bid') 'ask 'のための同じこと – Dark

+0

素晴らしい、更新されました。 – ajsp

関連する問題