熊猫数据框按日期时间月份分组

新手上路,请多包涵

考虑一个 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

我可以读入,并将日期列重新格式化为日期时间格式:

 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

但是我似乎找不到按月汇总的功能。

原文由 Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 413
2 个回答

设法做到了:

 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+

原文由 Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议

(更新:2018)

请注意, pd.Timegrouper 已折旧并将被删除。改用:

  df.groupby(pd.Grouper(freq='M'))

原文由 PandasRocks 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题