我在pandas数据框中有每日时间序列数据。我需要使用与标准月末频率不同的偏移量将其重新采样为每月。
dates = pd.date_range('2016-09-01', '2017-01-10')
df = pd.DataFrame(data=[x for x in range(len(dates))],index=dates,columns=['MyData'])
我可以看一个月末频率的月度系列:
df_monthly = df.resample('M').last()
df_monthly
Out[78]:
MyData
2016-09-30 29
2016-10-31 60
2016-11-30 90
2016-12-31 121
2017-01-31 131
如果月末='M',我想有类似的月度切片 'M-15',......'M-2','M-1','M','M + 1',M + 2',......'M + 15'。 最终,我计划将这些组合成一个列名为“M + T”的数据帧。
在pd.DataFrame.resample()或pd.DataFrame.asfreq()中有一种简单的方法吗?
答案 0 :(得分:2)
因此,根据您在此处询问的几种方式,它是如何完成的。
import pandas as pd
dates = pd.date_range('2016-09-01', '2017-01-10')
df = pd.DataFrame(data=[x for x in range(len(dates))],index=dates,columns=['MyData'])
df_monthly_m1 = df.shift(-1).resample('M').last()
df_monthly_m1
MyData
2016-09-30 30.0
2016-10-31 61.0
2016-11-30 91.0
2016-12-31 122.0
2017-01-31 131.0
df_monthly_p1 = df.shift(1).resample('M').last()
df_monthly_p1
MyData
2016-09-30 28.0
2016-10-31 59.0
2016-11-30 89.0
2016-12-31 120.0
2017-01-31 130.0