2016-07-11 14 views
2

時間を無視してPandasデータフレームを1時間ごとにグループ化したいと思います。pandas grouper int by frequency

マイデータ:

id opened_at    count sum 
     2016-07-01 07:02:05 1  46.14 
154 2016-07-01 07:34:02 1  479 
     2016-07-01 10:10:01 1  127.14 
     2016-07-02 12:01:04 1  8.14 
     2016-07-02 12:00:50 1  18.14 

私は以下のものを使用して考慮された日付と時間によってグループにできています。

groupByLocationDay = df.groupby([df.id, 
           pd.Grouper(key='opened_at', freq='3h')]) 

は、私はグループ時間によってのみ、それは次のようになりますことができるようにどのように次

id opened_at    count sum 
     2016-07-01 06:00:00 2  4296.14 
154 2016-07-01 09:00:00 46  43716.79 
     2016-07-01 12:00:00 169  150827.14 
     2016-07-02 12:00:00 17  1508.14 
     2016-07-02 09:00:00 10  108.14 

を取得します。

id opened_at   count sum 
     06:00:00 2  4296.14 
154 09:00:00 56  43824.93 
     12:00:00 203  152335.28 

元のデータは、このように私は3H周波数を取得する必要があり、時間ごとです。 ありがとう!

+0

は 'groupByLocationDay = df.groupby([。df.id、DF [ 'opened_at'] dt.hour])'動作しますか? – EdChum

+0

私はfreq = '3h'を取得する必要があります。何か案は? – tadalendas

答えて

2

あなたはこのようにそれを行うことができます。

In [134]: df 
Out[134]: 
    id   opened_at count  sum 
0 154 2016-07-01 07:02:05  1 46.14 
1 154 2016-07-01 07:34:02  1 479.00 
2 154 2016-07-01 10:10:01  1 127.14 
3 154 2016-07-02 12:01:04  1 8.14 
4 154 2016-07-02 12:00:50  1 18.14 
5 154 2016-07-02 08:34:02  1 479.00 

In [135]: df.groupby(['id', df.opened_at.dt.hour // 3 * 3]).sum() 
Out[135]: 
       count  sum 
id opened_at 
154 6    3 1004.14 
    9    1 127.14 
    12    2 26.28 
+0

私のデータは時間単位でグループ化されています.Guruperは3時間ごとの頻度でグループ化しています。グループをもう一度使用しようとすると、KeyError:属性IDもopen_atもありません。 – tadalendas

+0

@bumbambum、 - ご確認ください – MaxU

+0

素晴らしい感謝!私は3時間の頻度でグループ化するためにグルーピングを使用することを考えていました、そして、あなたの方法を使って今度は再びインデックスとグループをリセットしてください。しかし、これは良い方法です。 – tadalendas

関連する問題