我知道如何对数据帧进行重新采样,但对规则参数不接受DateOffset(月份= 1)感到沮丧。
如何以每月频率重新采样,但是从任何给定日期开始。例如:
Route::put('/manage_accounts/{id}', function()
{
//
});
会给我
ts = pd.date_range(end='19/9/2015', periods=127, freq='D')
df = pd.DataFrame(pd.Series(range(len(ts)), index=ts))
print(df.resample('M',how='sum',convention='end').tail(3))
我希望它给予
0
2015-07-31 1674
2015-08-31 2635
2015-09-30 2090
我怎样才能做到这一点?
答案 0 :(得分:1)
这有点笨拙,但我认为它有效:
df.index = df.index + pd.to_timedelta('19D')
print(df2.resample('M',how='sum',loffset= '19D').tail(3))
0
2015-09-19 1674
2015-10-19 2535
2015-11-19 3051
答案 1 :(得分:0)
关于此
有一个较旧的issue以下是一种解决方法 - 您可以转换为每月PeriodIndex
- 如果超过月中的某一天(下面的where(...)
),则向前滚动月份,然后再添加获取标签的天数。
In [61]: day = 19
In [62]: p_months = df.index.to_period('M')
In [66]: month = (p_months + np.where(df.index.day > day, 1, 0)).to_timestamp(how='s')
In [67]: grouper = month + pd.Timedelta(days=day-1)
In [68]: df.groupby(grouper).sum()
Out[68]:
0
2015-05-19 6
2015-06-19 589
2015-07-19 1485
2015-08-19 2480
2015-09-19 3441