京公网安备 11010802034615号
经营许可证编号:京B2-20210330
Pandas是Python中用于数据操作和分析的重要库。在Pandas中,shift()函数是一种用于将数据移动给定数量的行或列的方法。
具体来说,shift(1)可以被理解为一个参数为1的函数,它将每个元素向下移动一个位置,并用NaN填充第一行。类似地,shift(-1)将每个元素向上移动一个位置,并用NaN填充最后一行。这种移动可以应用于整个DataFrame或单个Series,并且可以用于多个不同的目的,包括计算差异、计算百分比变化、从前一个月到当前月等。
Shift()方法的使用方法很简单。下面是一些示例:
在某些情况下,我们需要计算相邻行之间的差异。例如,在股票市场数据中,我们可能需要计算每天的股票价格相对于前一天的股票价格的差异。
让我们看一个简单的例子:
import pandas as pd
data = {'day': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'], 'price': [100, 120, 130, 135, 140]} df = pd.DataFrame(data) df['price_diff'] = df['price'] - df['price'].shift(1) print(df)
在这个例子中,我们创建了一个包含日期和价格的DataFrame。然后,我们使用shift()函数计算相邻价格之间的差异,并将结果存储在新的列“ price_diff”中。输出如下:
day price price_diff 0 Monday 100 NaN 1 Tuesday 120 20.0 2 Wednesday 130 10.0 3 Thursday 135 5.0 4 Friday 140 5.0
从输出可以看出,第一行的差异值为NaN,因为没有前一天的价格数据可用。
与计算价格差异类似,有时我们需要计算相邻行之间的百分比变化。例如,在股票市场数据中,我们可能需要计算每天的股票价格相对于前一天的股票价格的百分比变化。
让我们看一个简单的例子:
import pandas as pd
data = {'day': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'], 'price': [100, 120, 130, 135, 140]} df = pd.DataFrame(data) df['price_pct_change'] = (df['price'] - df['price'].shift(1)) / df['price'].shift(1) * 100 print(df)
在这个例子中,我们创建了一个包含日期和价格的DataFrame。然后,我们使用shift()函数计算相邻价格之间的百分比变化,并将结果存储在新的列“ price_pct_change”中。输出如下:
day price price_pct_change 0 Monday 100 NaN 1 Tuesday 120 20.000000 2 Wednesday 130 8.333333 3 Thursday 135 3.846154 4 Friday 140 3.703704
从输出可以看出,第一行的百分比变化值为NaN,因为没有前一天的价格数据可用。
除了计算相邻行之间的差异和百分比变化外,shift()函数还可以用于向前/向后移动数据。这对于在时间序列数据中转换数据非常有用,例如从前一个月到当前月。
让我们看一个简单的例子:
import pandas as pd
data = {'month': ['January', 'February', 'March', 'April', 'May'], 'sales': [100, 120, 130
, 135, 140]}
df = pd.DataFrame(data)
df_forward = df.shift(1) print(df_forward)
df_backward = df.shift(-1) print(df_backward)
在这个例子中,我们创建了一个包含月份和销售额的DataFrame。然后,我们使用shift()函数将数据向前/向后移动一行,并将结果存储在新的DataFrame中。输出如下:
month sales
0 NaN NaN 1 January 100.0 2 February 120.0 3 March 130.0 4 April 135.0
month sales
0 February 120.0 1 March 130.0 2 April 135.0 3 May 140.0 4 NaN NaN
从输出可以看出,向前移动一行会将第一行移除并用NaN填充,向后移动一行会将最后一行移除并用NaN填充。
总结
以上是关于Pandas中shift(1)用法的介绍。Shift函数是一个非常有用的函数,在处理时间序列数据时尤其实用。通过对相邻数据进行移动,我们可以计算差异、计算百分比变化或进行数据转换。希望这篇800字的文章能够帮助读者更好地理解Pandas中shift(1)的用法。
想快速入门Python数据分析?这门课程适合你!
如果你对Python数据分析感兴趣,但不知从何入手,推荐你学习《山有木兮:Python数据分析极简入门》。这门课程专为初学者设计,内容简洁易懂,手把手教你掌握Python数据分析的核心技能,助你轻松迈出数据分析的第一步。

学习入口:https://edu.cda.cn/goods/show/3429?targetId=5724&preview=0
开启你的Python数据分析之旅,从入门到精通,只需一步!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据分析、业务决策、科学研究等领域,统计模型是连接原始数据与业务价值的核心工具——它通过对数据的规律提炼、变量关联分析 ...
2026-02-14在SQL查询实操中,SELECT * 与 SELECT 字段1, 字段2,...(指定个别字段)是最常用的两种查询方式。很多开发者在日常开发中,为了 ...
2026-02-14对CDA(Certified Data Analyst)数据分析师而言,数据分析的核心不是孤立解读单个指标数值,而是构建一套科学、完整、贴合业务 ...
2026-02-14在Power BI实操中,函数是实现数据清洗、建模计算、可视化呈现的核心工具——无论是简单的数据筛选、异常值处理,还是复杂的度量 ...
2026-02-13在互联网运营、产品迭代、用户增长等工作中,“留存率”是衡量产品核心价值、用户粘性的核心指标——而次日留存率,作为留存率体 ...
2026-02-13对CDA(Certified Data Analyst)数据分析师而言,指标是贯穿工作全流程的核心载体,更是连接原始数据与业务洞察的关键桥梁。CDA ...
2026-02-13在机器学习建模实操中,“特征选择”是提升模型性能、简化模型复杂度、解读数据逻辑的核心步骤——而随机森林(Random Forest) ...
2026-02-12在MySQL数据查询实操中,按日期分组统计是高频需求——比如统计每日用户登录量、每日订单量、每日销售额,需要按日期分组展示, ...
2026-02-12对CDA(Certified Data Analyst)数据分析师而言,描述性统计是贯穿实操全流程的核心基础,更是从“原始数据”到“初步洞察”的 ...
2026-02-12备考CDA的小伙伴,专属宠粉福利来啦! 不用拼运气抽奖,不用复杂操作,只要转发CDA真题海报到朋友圈集赞,就能免费抱走实用好礼 ...
2026-02-11在数据科学、机器学习实操中,Anaconda是必备工具——它集成了Python解释器、conda包管理器,能快速搭建独立的虚拟环境,便捷安 ...
2026-02-11在Tableau数据可视化实操中,多表连接是高频操作——无论是将“产品表”与“销量表”连接分析产品销量,还是将“用户表”与“消 ...
2026-02-11在CDA(Certified Data Analyst)数据分析师的实操体系中,统计基本概念是不可或缺的核心根基,更是连接原始数据与业务洞察的关 ...
2026-02-11在数字经济飞速发展的今天,数据已成为核心生产要素,渗透到企业运营、民生服务、科技研发等各个领域。从个人手机里的浏览记录、 ...
2026-02-10在数据分析、实验研究中,我们经常会遇到小样本配对数据的差异检验场景——比如同一组受试者用药前后的指标对比、配对分组的两组 ...
2026-02-10在结构化数据分析领域,透视分析(Pivot Analysis)是CDA(Certified Data Analyst)数据分析师最常用、最高效的核心实操方法之 ...
2026-02-10在SQL数据库实操中,字段类型的合理设置是保证数据运算、统计准确性的基础。日常开发或数据分析时,我们常会遇到这样的问题:数 ...
2026-02-09在日常办公数据分析中,Excel数据透视表是最常用的高效工具之一——它能快速对海量数据进行分类汇总、分组统计,将杂乱无章的数 ...
2026-02-09表结构数据作为结构化数据的核心载体,其“获取-加工-使用”全流程,是CDA(Certified Data Analyst)数据分析师开展专业工作的 ...
2026-02-09在互联网产品运营、用户增长的实战场景中,很多从业者都会陷入一个误区:盲目投入资源做推广、拉新,却忽视了“拉新后的用户激活 ...
2026-02-06