看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)假设你有一个 pandas DataFrame,包含以下销售数据:
import pandas as pd
data = {
'日期': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05'],
'销售额': [100, 150, 200, 180, 220]
}
df = pd.DataFrame(data)
请使用 pandas 的 shift()
方法完成以下任务:
'前一天销售额'
,表示每一天的销售额前一天的值(第一天的值为 NaN)。'销售额差值'
,表示当天销售额与前一天销售额的差值(第一天的差值为 NaN)。shift()
方法中 periods
参数的作用,并说明如果将 periods
设置为负值会发生什么。要求:
import pandas as pd
# 创建 DataFrame
data = {
'日期': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05'],
'销售额': [100, 150, 200, 180, 220]
}
df = pd.DataFrame(data)
# 任务 1:创建 '前一天销售额' 列
df['前一天销售额'] = df['销售额'].shift(1)
# 任务 2:创建 '销售额差值' 列
df['销售额差值'] = df['销售额'] - df['前一天销售额']
# 输出结果
print(df)
运行上述代码后,DataFrame 的输出如下:
日期 销售额 前一天销售额 销售额差值
0 2023-01-01 100 NaN NaN
1 2023-01-02 150 100.0 50.0
2 2023-01-03 200 150.0 50.0
3 2023-01-04 180 200.0 -20.0
4 2023-01-05 220 180.0 40.0
shift()
方法中 periods
参数的解释作用:shift()
方法用于将 DataFrame 或 Series 的索引或数据沿指定轴(通常是行)移动指定的步数。periods
参数决定移动的步数:
periods > 0
,数据向下移动(向后),前面的行会变成 NaN。例如,shift(1)
将数据向下移动一行,首行变为 NaN。periods = 0
,数据不移动,返回原数据。periods < 0
,数据向上移动(向前),后面的行会变成 NaN。例如,shift(-1)
将数据向上移动一行,末行变为 NaN。负值的影响:当 periods
设置为负值时,数据会向上移动。例如,如果在上述代码中使用 df['销售额'].shift(-1)
,会得到后一天的销售额,结果如下:
df['后一天销售额'] = df['销售额'].shift(-1)
print(df)
输出:
日期 销售额 前一天销售额 销售额差值 后一天销售额
0 2023-01-01 100 NaN NaN 150.0
1 2023-01-02 150 100.0 50.0 200.0
2 2023-01-03 200 150.0 50.0 180.0
3 2023-01-04 180 200.0 -20.0 220.0
4 2023-01-05 220 180.0 40.0 NaN
解释:shift(-1)
将“销售额”列向上移动一行,因此每行显示的是后一天的销售额,最后一行因为没有后续数据而为 NaN。
shift()
方法默认沿轴 0(行)移动,若需沿列移动,可设置 axis=1
。fill_value
参数可用于指定填充 NaN 的值,例如 shift(1, fill_value=0)
会用 0 填充 NaN。(完)
更新时间:2025-08-18 10:24:58 标签:pandas python 销售额