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

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

当我移动 1 'm' 时,它不是移动到下个月,而是移动到当月的月末。 (1July2016 变为 30July2016,而不是 1Aug2016)。

我可以移动 2 并得到我想要的,但我担心我错过了使用 shiftfreq 参数的一些基本想法

python - 将 Pandas 日期索引移至下个月-LMLPHP

最佳答案

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

关于python - 将 Pandas 日期索引移至下个月,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37827795/

10-12 23:20