【发布时间】:2016-01-25 19:49:11
【问题描述】:
我有一个带有 TIMESTAMP 列的 pandas DataFrame,它是 datetime64 数据类型。请记住,最初此列未设置为索引;索引只是常规整数,前几行如下所示:
TIMESTAMP TYPE
0 2014-07-25 11:50:30.640 2
1 2014-07-25 11:50:46.160 3
2 2014-07-25 11:50:57.370 2
每天有任意数量的记录,并且可能有几天没有数据。我想要得到的是每月平均每日记录数,然后将其绘制为条形图,x 轴为月份(2014 年 4 月、2014 年 5 月......等)。我设法使用下面的代码计算了这些值
dfWIM.index = dfWIM.TIMESTAMP
for i in range(dfWIM.TIMESTAMP.dt.year.min(),dfWIM.TIMESTAMP.dt.year.max()+1):
for j in range(1,13):
print dfWIM[(dfWIM.TIMESTAMP.dt.year == i) & (dfWIM.TIMESTAMP.dt.month == j)].resample('D', how='count').TIMESTAMP.mean()
给出以下输出:
nan
nan
3100.14285714
6746.7037037
9716.42857143
10318.5806452
9395.56666667
9883.64516129
8766.03225806
9297.78571429
10039.6774194
nan
nan
nan
这没关系,并且通过更多工作,我可以映射到结果以更正月份名称,然后绘制条形图。但是,我不确定这是否是正确/最好的方法,我怀疑可能有更简单的方法可以使用 Pandas 获得结果。
我很高兴听到你的想法。谢谢!
注意:如果我没有将 TIMESTAMP 列设置为索引,我会收到“reduction operation 'mean' not allowed for this dtype”错误。
【问题讨论】:
标签: python pandas timestamp time-series