我有一个以日期为索引的数据帧。我想统计每两周汇总的事件并进行绘图。示例:
date id
2018-01-01 a1
2018-01-01 a2
2018-01-05 a3
2018-01-12 a4
2018-01-15 a5
2018-01-17 a6
2018-01-19 a7
...
应该显示为(格式令人沮丧,如果我能辨别,那就好了(:
2018-01-1 4
2018-01-2 3
...
然后进行绘图。
如果可能的话,我想要一个参数,这样我就可以切换到每周或每月。
如果日期是索引,则可以使用具有SemiMonthStart('SMS'(频率的resample
:
df.index = pd.to_datetime(df.index)
df.resample('SMS').count()
输出:
id
date
2018-01-01 4
2018-01-15 3
您也可以使用日期偏移量(此处为SemiMonthBegin
(来舍入日期,并将此结果用于groupby
+count
:
group = (pd.to_datetime(df['date'])
.apply(pd.offsets.SemiMonthBegin().rollback)
)
out = df.groupby(group)['id'].count()
输出:
date
2018-01-01 4
2018-01-15 3
Name: id, dtype: int64