Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将日期索引移到下个月_Python_Date_Pandas_Dataframe_Datetimeindex - Fatal编程技术网

Python 将日期索引移到下个月

Python 将日期索引移到下个月,python,date,pandas,dataframe,datetimeindex,Python,Date,Pandas,Dataframe,Datetimeindex,我有一个带有日期索引的数据框。我想创建一个具有滞后值的新列。也就是说,laggedfoo(1aug2016)=foo(2016年7月1日) 我使用了dataframe.shift,但它的行为不符合预期;我可以让它工作,但我想我错过了如何处理和转换日期索引的大图 当我移动1“m”时,它将移动到当前月的月末,而不是移动到下一个月。(2016年7月1日变为2016年7月30日,而非2016年8月1日) 我可以按2移位,得到我想要的,但我担心我缺少了使用shift和freq参数的一些基本概念 我认为您需

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

我使用了dataframe.shift,但它的行为不符合预期;我可以让它工作,但我想我错过了如何处理和转换日期索引的大图

当我移动1“m”时,它将移动到当前月的月末,而不是移动到下一个月。(2016年7月1日变为2016年7月30日,而非2016年8月1日)

我可以按2移位,得到我想要的,但我担心我缺少了使用
shift
freq
参数的一些基本概念


我认为您需要将频率更改为
月开始频率
-
MS
-请参见:

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