1. ホーム
  2. python

[解決済み] pandas dataframe groupby datetime month

2022-06-22 18:11:27

質問

csvファイルを考えてみましょう。

string,date,number
a string,2/5/11 9:16am,1.0
a string,3/5/11 10:44pm,2.0
a string,4/22/11 12:07pm,3.0
a string,4/22/11 12:10pm,4.0
a string,4/29/11 11:59am,1.0
a string,5/2/11 1:41pm,2.0
a string,5/2/11 2:02pm,3.0
a string,5/2/11 2:56pm,4.0
a string,5/2/11 3:00pm,5.0
a string,5/2/14 3:02pm,6.0
a string,5/2/14 3:18pm,7.0

これを読み込んで、日付カラムをdatetime形式に再フォーマットすればいいんです。

b=pd.read_csv('b.dat')
b['date']=pd.to_datetime(b['date'],format='%m/%d/%y %I:%M%p')

私は、データを月ごとにグループ化しようとしています。月にアクセスし、それによってグループ化する明白な方法があるように思われます。しかし、私はそれを行うことができないようです。どなたか方法をご存知でしょうか?

私が現在試しているのは、日付による再インデックス化です。

b.index=b['date']

こんな感じで月にアクセスできるんです。

b.index.month

しかし、月別にひとまとめにする関数が見つからないようです。

どのように解決するのですか?

なんとかできました。

b = pd.read_csv('b.dat')
b.index = pd.to_datetime(b['date'],format='%m/%d/%y %I:%M%p')
b.groupby(by=[b.index.month, b.index.year])

または

b.groupby(pd.Grouper(freq='M'))  # update for v0.21+