如何在Python中基于日期进行装箱/计数

如何在Python中基于日期进行装箱/计数,python,numpy,pandas,Python,Numpy,Pandas,我有一个python系列,其中包含datetime.date对象,范围从2013年1月到2015年12月,即产品销售的月份。我想做的是按月统计和分类销售的产品数量 有没有一种有效的方法来处理pandas?我建议使用datetime64,即首先在索引上应用pd.\u datetime。如果将其设置为索引,则可以使用重采样: In [11]: s = pd.date_range('2015-01', '2015-03', freq='5D') # DatetimeIndex In [12]: p

我有一个python系列,其中包含datetime.date对象,范围从2013年1月到2015年12月,即产品销售的月份。我想做的是按月统计和分类销售的产品数量


有没有一种有效的方法来处理pandas?

我建议使用datetime64,即首先在索引上应用
pd.\u datetime
。如果将其设置为索引,则可以使用重采样:

In [11]: s = pd.date_range('2015-01', '2015-03', freq='5D')  # DatetimeIndex

In [12]: pd.Series(1, index=s).resample('M', how='count')
Out[12]:
2015-01-31    7
2015-02-28    5
2015-03-31    1
Freq: M, dtype: int64

这非常适合我的应用程序,比我当前的方法简洁得多。我转换为datetimeindex,然后在我的DF中创建三个额外的列,分别为天、月和年,并使用groupby。pandas datetimeindex对象和python的原生datetime对象之间有什么区别?@user5374436 pandas Timestamp/datetimeindex在引擎盖下使用numpy的datetime64,它基本上只是带有时区信息的int64(与datetime.datetime一样,附加到整个数组而不是特定对象)。datetime.datetime的效率要低得多,因为它们是python对象。奇怪的是,我为什么不能使用s.to_系列?感谢您的指点,阅读一些其他文档非常有帮助。@user5374436您可以,使用它的一个恼人之处是它创建了日期时间的副本(在索引和值中)。。。考虑到这一点,它可能与性能无关。他们都工作!