我的系列:
dates = pd.date_range('2018-01-03', '2018-09-13')
s = pd.Series(range(len(dates)), index=dates)
我想重新采样到月份,但从索引的第一天开始,而不是从每月的第一天开始。如果我重新采样为“MS”,第一个日期是2018-01-01,而不是2018-01-03。当然,这是“月份开始”,所以这是预期的。
但是,我如何每月重新采样,而不是从月初开始采样,而是从同一个月的同一天开始采样,因此产生的索引是[“2018-01-03”,“2018-02-03”等](从索引中的第一个日期开始的月份)?
我发现的唯一方法是创建前导日期,做一个负移位,然后使用loffset参数(因为移位和loffset都不考虑数据与索引的对齐)。但我不想这样。
4条答案
按热度按时间hmtdttj41#
获取每月系列
返回到第一次约会之前的MonthEnd并添加天数
使用
reindex
qij5mzcb2#
我做到这一点的最简单的方法是:
从你最初的例子:
我知道这个问题很老,我在Pandas 2.0.2上
vptzau2j3#
我通过这些简单的步骤解决了这个问题,并从一些尝试中调整来解决这个问题(包括answer of piRSquared,还有其他网站和SO的问题):
备选方案
我最终采取了一种不同的方法。我从以下内容开始:
要获得从任意日期开始的预期月度周期,请使用上面的重复日期创建DataFrame,然后使用
fillna(method="ffill")
使用原始DataFrame中的日期重新索引它,然后使用groupby
按重复日期分组。希望这也能帮助到其他人。
m4pnthwp4#
根据你的回答,减少你可以做的计算:
请注意,我没有复制到S2并分配一个完整的月份索引,因为重新采样已经将初始日期设置为该月的第一天。