在 pandas 数据框中使用函数 shift

Use function shift in pandas dataframe

我有一个包含日期、previous_day 和价格的数据框。

DATE       | prev_day |  price
01-01-2018 |    1     |  44
02-01-2018 |    1     |  45
02-01-2018 |    2     |  41
03-01-2018 |    1     |  54
03-01-2018 |    2     |  49
03-01-2018 |    3     |  46

我想使用下一步创建第二天和前一天:

DATE       | prev_day | price | next_day | prior_day
01-01-2018 |    1     |  44   |          |    
02-01-2018 |    1     |  45   |          |    
02-01-2018 |    2     |  41   |          |    
03-01-2018 |    1     |  54   |          |    
03-01-2018 |    2     |  49   |          |
03-01-2018 |    3     |  46   |          |

逻辑包括每个 next_day 等于 DATE + 1 天和 prev_day + 1 天的价格,prior_day 等于 DATE - 1 天的价格和 prev_day - 1 天。

IIUC,你可以 groupby "prev_day" 和 shift:

df['prior_day'] = df.groupby('prev_day')['price'].shift()
df['next_day'] = df.groupby('prev_day')['price'].shift(-1)

输出:

         DATE  prev_day  price  prior_day  next_day
0  01-01-2018         1     44        NaN      45.0
1  02-01-2018         1     45       44.0      54.0
2  02-01-2018         2     41        NaN      49.0
3  03-01-2018         1     54       45.0       NaN
4  03-01-2018         2     49       41.0       NaN
5  03-01-2018         3     46        NaN       NaN