2017-04-23 9 views
1
     open high low  close 
date     
2017-04-10 09:01:00 3992.0 3992.0 3982.0 3984.0 
2017-04-10 09:02:00 3985.0 3988.0 3980.0 3986.0 
2017-04-10 09:03:00 3986.0 3986.0 3973.0 3977.0 
2017-04-10 09:04:00 3977.0 3983.0 3974.0 3981.0 
2017-04-10 09:05:00 3980.0 3980.0 3956.0 3961.0 
2017-04-10 09:06:00 3961.0 3968.0 3959.0 3964.0 

1分毎に生成される在庫データがあります。 グループごとに15行ずつグループ化し、各グループにohlc関数を適用したいとします。それを行う良い方法はありますか?前もって感謝します。パンダによる行数のグループ化

+0

あなたはあなたはそれが間違っている場合でも、試してみたものを投稿することができますか? –

+0

15行で15分を意味しますか?そうであれば、オープンでハイとは何でしょうか?最大/最小オープンまたは最初のオープン?閉じるのと同じ質問。 – pshep123

答えて

1

私は線に沿って何かが動作するはず疑う:

df.resample('15Min').agg({'open': 'first', 
          'high': 'max', 
          'low': 'min', 
          'close': 'last'}) 

証明

df 
        open high low  close 
date     
2017-04-10 09:01:00 3992.0 3992.0 3982.0 3984.0 
2017-04-10 09:02:00 3985.0 3988.0 3980.0 3986.0 
2017-04-10 09:03:00 3986.0 3986.0 3973.0 3977.0 
2017-04-10 09:04:00 3977.0 3983.0 3974.0 3981.0 
2017-04-10 09:05:00 3980.0 3980.0 3956.0 3961.0 
2017-04-10 09:06:00 3961.0 3968.0 3959.0 3964.0 

df.resample('2Min').agg({'open': 'first', 
          'high': 'max', 
          'low': 'min', 
          'close': 'last'}) 

        open high low  close 
date     
2017-04-10 09:00:00 3992.0 3992.0 3982.0 3984.0 
2017-04-10 09:02:00 3985.0 3988.0 3973.0 3977.0 
2017-04-10 09:04:00 3977.0 3983.0 3956.0 3961.0 
2017-04-10 09:06:00 3961.0 3968.0 3959.0 3964.0 
+0

あなたの仕事のために多くのありがとう、それは私の質問を解決します。 – michael

+0

あなたは解決策をアップアップして受け入れることを考えるかもしれません –

0

おかげ@Sergey Bushmanov。それは私の質問を解決した。 私の特別な状況のためにさらに追加しました。 データに「ギャップ」があるので、私は直接resampleを使用することはできません。

私は上記のコードでこのベースを試しました。結果は良いです。

df.reset_index(inplace=True) 
groupby_list=list((df.index/15).map(lambda x:int(x))) 
df.groupby(groupby_list).agg({ 
     'code':'first','date':'first', 'open': 'first', 
          'high': 'max', 
          'low': 'min', 
          'close': 'last'}) 

結果:

open high code close low date 
0 3992.0 3992.0 jd1709 3916.0 3914.0 2017-04-10 09:01:00 
1 3916.0 3935.0 jd1709 3920.0 3913.0 2017-04-10 09:16:00 
2 3919.0 3926.0 jd1709 3921.0 3910.0 2017-04-10 09:31:00 
3 3921.0 3923.0 jd1709 3920.0 3913.0 2017-04-10 09:46:00 
4 3919.0 3928.0 jd1709 3927.0 3917.0 2017-04-10 10:01:00 
5 3926.0 3932.0 jd1709 3927.0 3923.0 2017-04-10 10:31:00 
6 3927.0 3928.0 jd1709 3915.0 3912.0 2017-04-10 10:46:00 
7 3916.0 3924.0 jd1709 3918.0 3912.0 2017-04-10 11:01:00 
8 3919.0 3925.0 jd1709 3916.0 3916.0 2017-04-10 11:16:00 
9 3917.0 3928.0 jd1709 3924.0 3912.0 2017-04-10 13:31:00