我试图用下面的格式从一个简单的文件中绘制出每个月发生的事件的汇总图。
4/7/13 1
4/15/13 1
4/16/13 1
4/17/13 1
4/20/13 1
5/2/13 1
5/3/13 1
5/3/13 1
5/6/13 1
5/9/13 1
5/12/13 1
5/16/13 1
5/16/13 1
5/16/13 1
5/26/13 1
5/29/13 1
6/5/13 1
6/7/13 1
6/14/13 1
6/24/13 1
6/25/13 1
6/26/13 1
6/26/13 1
6/28/13 1
6/30/13 1
所以,我想要一个卷起来像
4/30/13 5
5/31/13 11
6/30/13 8
我尝试了以下代码:
import pandas as pd
import datetime
import numpy as np
grouper = pd.TimeGrouper('1M')
# set index of dataframe to date
a1 = df.set_index('Date')
# create a series object with just the column i want to rollup.
seriesO = a1['Outlier ']
grouped1 = seriesO.groupby(grouper).aggregate(np.size)
grouped1
结果是:
2013-04-30 0
2013-05-31 48
2013-06-30 9
有什么想法?
不建议在<= 0.13.1中这样做(但在master/0.14中可以正常工作)。因为它需要确保东西是排序的(并且不在任何地方记录)。
In [13]: s.groupby(pd.TimeGrouper('1M')).agg(np.size)
Out[13]:
0
2013-04-30 5
2013-05-31 11
2013-06-30 9
Freq: M, dtype: int64
首选方法如下(在任何版本中都可以使用)
In [14]: s.resample('1M',how='count')
Out[14]:
0
2013-04-30 5
2013-05-31 11
2013-06-30 9
Freq: M, dtype: int64