【发布时间】:2018-04-21 21:35:05
【问题描述】:
我有一个带有 datetimeindex 的数据框。
>>> df.head()
Out[6]:
1
2004-01-02 09:00:00+11:00 0.7519
2004-01-02 10:00:00+11:00 0.7520
2004-01-02 12:00:00+11:00 0.7515
2004-01-02 13:00:00+11:00 0.7502
2004-01-02 14:00:00+11:00 0.7519
我想跟踪周数。我不知道是否可能缺少某些日子,所以不能简单地将条目数除以 7。
如果我执行以下操作,我会得到一年内的周数:
df['temp']= df.index.week
df[df.index.year==2005].head()
Out[20]:
1 temp
2005-01-03 10:00:00+11:00 0.7829 1
2005-01-03 11:00:00+11:00 0.7815 1
2005-01-03 12:00:00+11:00 0.7814 1
2005-01-03 13:00:00+11:00 0.7797 1
2005-01-03 14:00:00+11:00 0.7731 1
这样做的问题是,周在 52 结束,而下一年又从 1 开始。我以为我可以按年份和周数分组以获得累计周数,但同一周可能会落入 2 年,例如
>>> df[df.index.year==2008].resample('d').tail()
Out[30]:
1 temp
2008-12-27 00:00:00+11:00 0.683678 52
2008-12-28 00:00:00+11:00 NaN NaN
2008-12-29 00:00:00+11:00 0.689414 1
2008-12-30 00:00:00+11:00 0.690654 1
2008-12-31 00:00:00+11:00 0.691058 1
>>> df[df.index.year==2009].resample('d').head()
Out[29]:
1 temp
2009-01-01 00:00:00+11:00 0.695833 1
2009-01-02 00:00:00+11:00 0.697680 1
2009-01-03 00:00:00+11:00 0.705733 1
2009-01-04 00:00:00+11:00 NaN NaN
2009-01-05 00:00:00+11:00 0.711436 2
有没有办法记录累计周数?
【问题讨论】:
标签: python pandas datetime pandas-groupby