You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中shift(1)函数取值方向的技术咨询

关于Pandas shift(1)的清晰解释

嘿,这个问题其实很容易搞混,我给你掰扯清楚!首先直接给结论:Pandas里的shift(1)返回的是当前单元格的上一行(前一个时间点)内容,完全不是下一个单元格的内容。

拿你举的例子来说:当处理2000年2月2日的数据时,调用.shift(1)会返回2000年2月1日的数据,而不是2月3日的。

用实际例子理解更直观

假设你有一个包含日期和价格的DataFrame:

import pandas as pd

data = {
    '日期': ['2000-02-01', '2000-02-02', '2000-02-03'],
    '价格': [100, 105, 110]
}
df = pd.DataFrame(data)
df['日期'] = pd.to_datetime(df['日期'])

当你对价格列调用shift(1)后:

df['价格_shift1'] = df['价格'].shift(1)

得到的结果是:

日期价格价格_shift1
2000-02-01100NaN
2000-02-02105100
2000-02-03110105

你看,2000-02-02对应的价格_shift1就是前一天(2000-02-01)的价格100,完美匹配你计算日收益率的需求——日收益率公式通常是(当日价格 - 前一日价格)/前一日价格,用shift(1)刚好能拿到前一日的价格。

补充:shift(-1)才是取后一行内容

如果想获取下一个单元格(后一个时间点)的内容,你需要用shift(-1)。还是上面的例子,调用df['价格'].shift(-1)会得到:

日期价格价格_shift-1
2000-02-01100105
2000-02-02105110
2000-02-03110NaN

这时候2000-02-02对应的就是2月3日的价格110了。

内容的提问来源于stack exchange,提问作者Sohail Jaffry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:24:50