每天重新采样到每月,大熊猫的“月末减去t天”抵消

时间:2017-01-03 11:26:35

标签: python pandas dataframe

我在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()中有一种简单的方法吗?

1 个答案:

答案 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