将 Pandas 日期索引移至下个月

Shift Pandas date index to next month

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

我使用了dataframe.shift,但它没有按预期运行;我可以破解它来工作,但我想我错过了如何处理和转移日期索引的大局。

当我移动 1 'm' 时,不是移动到下个月,而是移动到当月的月末。 (2016 年 7 月 1 日变为 2016 年 7 月 30 日,而不是 2016 年 8 月 1 日)。

我可以移动 2 并得到我想要的,但我担心我缺少使用 shiftfreq 参数

的一些基本想法

我认为您需要将频率更改为 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