2017-03-22 24 views
2

を適用し、私はこの(インデックス= datetime型)のように見えるパンダのデータフレームにいくつかの在庫データを持っているパンダデータフレーム:一時間毎グループと機能

      ask  bid 
datetime 
2017-03-01 00:00:07.346 1.33145 1.33135 
2017-03-01 00:00:07.498 1.33147 1.33134 
2017-03-01 00:00:08.124 1.33147 1.33133 
2017-03-01 00:00:08.659 1.33148 1.33134 
2017-03-01 00:00:12.104 1.33146 1.33134 
2017-03-01 00:00:12.858 1.33147 1.33134 
2017-03-01 00:00:17.583 1.33148 1.33135 

私は2時間のチャンクにグループにこのデータを好きで、いくつかを追加します新しい列。 OpenAskが掲載閉じる、2時間の間に価格を最初に掲載されて

    Open Ask, Close Ask, Max Ask, Open Bid, Max Bid, Close Bid 
datetime 
2017-03-01 00:00 
2017-03-01 02:00 
... 

され、最後には、私はこれについてどのように行くだろう

など、2時間の間に価格しますか?私はresampleを使うことができると思うが、Open Ask、Close Askなどを見つける方法がわからない。

ありがとう。

答えて

2

ご希望の結果を生成するフォーマットで素早く答え

df.groupby(pd.TimeGrouper('2H')).agg(['first', 'last', 'max']) 

       ask      bid     
       first  last  max first  last  max 
datetime               
2017-03-01 1.33145 1.33148 1.33148 1.33135 1.33135 1.33135 

fs = dict(Open='first', Close='last', Max='max') 
ag = dict(Ask=fs, Bid=fs) 
gp = pd.TimeGrouper('2H') 
d1 = df.rename(columns=str.capitalize).groupby(gp).agg(ag) 
d1.sort_index(axis=1, ascending=False, inplace=True) 
d1.columns = d1.columns.map('{0[1]} {0[0]}'.format) 
print(d1) 

      Open Ask Max Ask Close Ask Open Bid Max Bid Close Bid 
datetime                
2017-03-01 1.33145 1.33148 1.33148 1.33135 1.33135 1.33135 
関連する問題