【发布时间】:2020-03-18 03:00:12
【问题描述】:
上下文:
我有一个与此类似的数据框,只是它延伸了数十年的数据:
df = pd.DataFrame({'time':['2003-02-02', '2003-02-03', '2003-02-04', '2003-02-05', '2003-02-06', '2003-02-07', '2003-02-08', '2003-02-09','2003-02-10', '2003-02-11'], 'NDVI': [0.505413, 0.504566, 0.503682, 0.502759, 0.501796, 0.500791, 0.499743, 0.498651, 0.497514, 0.496332]})
df['time'] = pd.to_datetime(df['time'], format='%Y-%m-%d')
df.set_index('time', inplace=True)
输出:
NDVI
time
2003-02-02 0.505413
2003-02-03 0.504566
2003-02-04 0.503682
2003-02-05 0.502759
2003-02-06 0.501796
2003-02-07 0.500791
2003-02-08 0.499743
2003-02-09 0.498651
2003-02-10 0.497514
2003-02-11 0.496332
问题:
我想:
- 在从每年年初开始的自定义时间间隔内获取平均
NDVI值。如果间隔是例如10 天,值将被分类为 [Jan-1 : Jan-10]、[Jan-11 : Jan-20] 等。一年中的最后一个间隔必须是 5 天或 6 天的间隔,具体取决于闰年(即一年中的第 360-365/6 天)。 - 为相应的区间编号添加一列,因此输出将类似于以下内容:
NDVI yr_interval
time
2003-01-31 0.505413 4
2003-02-10 0.497514 5
在上面的例子中,第一行表示 2003 年的第 4 个 10 天间隔。
问题:
知道如何实现:
- 对于跨越数年的时间序列,间隔号应在每年重新开始(类似于
pandas.Series.dt.week的行为)? - 代码应该足够灵活以测试其他时间间隔(例如 8 天)?
【问题讨论】:
-
到目前为止你有什么尝试?
-
我真的不知道从哪里开始。
-
尝试从这里开始,然后发布您需要帮助的任何代码:stackoverflow.com/a/30328738/3923163
-
谢谢。我可以分组或重新采样,但我看不出这如何有助于实现我所需要的,特别是 i)创建从年初开始并每年重新开始的时间间隔,以及 ii)在全年范围内设置时间间隔。我能找到的最接近的类比是
pandas.Series.dt.week,除了自定义天数而不是 7。