web-dev-qa-db-ja.com

Python Pandas:日時列を時間と分の集計にグループ化します

これはかなり簡単だと思われますが、ほぼ1日たっても解決策が見つかりませんでした。私はデータフレームにread_csvをロードし、日付と時間の列を簡単に解析、結合、インデックス付けして1つの列に入れましたが、今、あなたができることと同様の時間と分のグループ化に基づいて計算を変更し、実行できるようにしたいですExcelピボット。

私は時間または分にリサンプリングする方法を知っていますが、各時間/分に関連付けられた日付部分を維持しますが、Excelピボットでグループ化して「時間」と「分」を選択するのと同様にデータセットのみを時間と分に集約します他のものは選択しません。

どんな助けも大歓迎です。

48
horatio1701d

できません、dfはDataFrameです:

times = pd.to_datetime(df.timestamp_col)
df.groupby([times.hour, times.minute]).value_col.sum()
45
Wes McKinney

Wesのコードはうまくいきませんでした。しかし、DatetimeIndex関数( docs )は以下を行いました:

times = pd.DatetimeIndex(data.datetime_col)
grouped = df.groupby([times.hour, times.minute])

DatetimeIndexオブジェクトは、パンダの時間の表現です。最初の行は、日時の配列を作成します。 2行目はこの配列を使用して、すべての行の時間と分のデータを取得し、データをこれらの値でグループ化( docs )できるようにします。

34
Nix G-D

このタイプのgroupbyを探していたときに、これに出くわしました。上記のWesのコードはうまくいきませんでしたが、pandasの経時的な変化によるものかどうかはわかりません。

pandas 0.16.2、私が最後にしたことは:

grp = data.groupby(by=[data.datetime_col.map(lambda x : (x.hour, x.minute))])
grp.count()

グループ化されたインデックスとして(時間、分)タプルがあります。マルチインデックスが必要な場合:

grp = data.groupby(by=[data.datetime_col.map(lambda x : x.hour),
                       data.datetime_col.map(lambda x : x.minute)])
15
WillZ