8

DataFrame日付列を持つパンダがあります。インデックスではありません。

各場所の月ごとの集計を使用して、データフレームに pivot_table を作成したいと考えています。

データは次のようになります。

['INDEX'] DATE LOCATION COUNT
0 2009-01-02 00:00:00 AAH 1
1 2009-01-03 00:00:00 ABH 1
2 2009-01-03 00:00:00 AAH 1
3 2009-01-03 00:00:00 ABH 1
4 2009-01-04 00:00:00 ACH 1

私が使用した:

pivot_table(cdiff, values='COUNT', rows=['DATE','LOCATION'], aggfunc=np.sum)

値をピボットします。cdiff.DATE を日付ではなく月に変換する方法が必要です。私は次のような結果になることを願っています: データは次のようになります:

  
  月の場所数
1月 AAH 2
1 月 ABH 2
1 月 ACH 1

strftimecdiff.DATE であらゆる方法を試しましたが、成功しませんでした。シリーズオブジェクトではなく、文字列に適用したいと考えています。

4

1 に答える 1

12

私は提案します:

months = cdiff.DATE.map(lambda x: x.month)
pivot_table(cdiff, values='COUNT', rows=[months, 'LOCATION'],
            aggfunc=np.sum)

月の名前を取得するには、別の関数を渡すか、組み込みのcalendar.month_name. 必要な形式でデータを取得するにはreset_index、結果を呼び出すか、次のようにすることもできます。

cdiff.groupby([months, 'LOCATION'], as_index=False).sum()

于 2012-04-01T16:21:23.653 に答える