在 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
我有一个包含日期、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