将Pandas日期指数转移到下个月

时间:2016-06-15 06:37:25

标签: python date pandas dataframe datetimeindex

我有一个带有日期索引的数据框。我想创建一个具有滞后值的新列。也就是说,laggedfoo(1aug2016)= foo(1july2016)

我使用了dataframe.shift,但它并没有像预期的那样表现;我可以破解它的工作,但我想我错过了如何对待和转移日期指数的大局。

当我转移1' m'而不是转移到下个月时,它会转移到当月的月末。 (2016年7月1日成为2016年7月30日,而非1Aug2016)。

我可以换乘2并得到我想要的东西,但我担心我错过了使用shiftfreq参数

的基本想法

enter image description here

1 个答案:

答案 0 :(得分:5)

我认为您需要更改频率month start frequency - MS - 请参阅offset-aliases

import pandas as pd

fwd_df = pd.DataFrame({'Dubai m1': {pd.Timestamp('2016-08-01 00:00:00'): 3, pd.Timestamp('2016-07-01 00:00:00'): 2, pd.Timestamp('2016-09-01 00:00:00'): 4, pd.Timestamp('2016-06-01 00:00:00'): 1}})

print (fwd_df['Dubai m1'])
2016-06-01    1
2016-07-01    2
2016-08-01    3
2016-09-01    4
Name: Dubai m1, dtype: int64

print (fwd_df['Dubai m1'].shift(1, freq='MS'))
2016-07-01    1
2016-08-01    2
2016-09-01    3
2016-10-01    4
Freq: MS, Name: Dubai m1, dtype: int64