在python数据分析中,可以使用shift()方法对DataFrame对象的数据进行位置的前滞、后滞移动。

                   

语法

DataFrame.shift(periods=1, freq=None, axis=0)

  • periods可以理解为移动幅度的次数,shift默认一次移动1个单位,也默认移动1次(periods默认为1),则移动的长度为1 * periods。
    periods可以是正数,也可以是负数。负数表示前滞,正数表示后滞。
  • freq是一个可选参数,默认为None,可以设为一个timedelta对象。适用于索引为时间序列数据时。
    freq为None时,移动的是其他数据的值,即移动periods*1个单位长度。
    freq部位None时,移动的是时间序列索引的值,移动的长度为periods * freq个单位长度。
  • axis默认为0,表示对列操作。如果为行则表示对行操作。

移动滞后没有对应值的默认为NaN。
         


示例


period为正,无freq

import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
df = pd.DataFrame(data=data, index=index, columns=['close'])
df.index.name = 'date'
print(df)
print("=========================================")
df['昨收'] = df['close'].shift()
df['change'] = df['close'] - df['close'].shift()
print(df)


period为负,无freq

import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
index = pd.to_datetime(index)
index.name = 'date'df = pd.DataFrame(data=data, index=index, columns=['昨收'])
print(df)
print("=========================================")
df['close'] = df['昨收'].shift(-1)
df['change'] = df['昨收'].shift(-1) - df['close']
print(df)


period为正,freq为正

import pandas as pd
import datetime
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
index = pd.to_datetime(index)
index.name = 'date'
df = pd.DataFrame(data=data, index=index, columns=['close'])
print(df)
print("=========================================")
print(df.shift(periods=2, freq=datetime.timedelta(3)))

如图,索引列的时间序列数据滞后了6天。(二乘以三)

period为正,freq为负

import pandas as pd
import datetime
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
index = pd.to_datetime(index)
index.name = 'date'
df = pd.DataFrame(data=data, index=index, columns=['close'])
print(df)
print("=========================================")
print(df.shift(periods=3, freq=datetime.timedelta(-3)))

如图,索引列的时间序列数据前滞了9天(三乘以负三)

period为负,freq为负

import pandas as pd
import datetime
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
index = pd.to_datetime(index)
index.name = 'date'
df = pd.DataFrame(data=data, index=index, columns=['close'])
print(df)
print("=========================================")
print(df.shift(periods=-3, freq=datetime.timedelta(-3)))

如图,索引列的时间序列数据滞后了9天(负三乘以负三)

python DataFrame的shift()方法相关推荐

  1. 这或许是全网最全 Python dataframe 数据合并方法汇总

    有位朋友面试阿里的数据岗位,面试官问关于Python的5种数据合并的函数,结果他蒙蔽了'... 那么,究竟是哪五个呢?今天,我们就来带大家了解一下,喜欢记得收藏.关注.点赞. 注意:完整代码.资料.技 ...

  2. python DataFrame的合并方法总结

    https://blog.csdn.net/haha_point/article/details/86512316

  3. Python教程:shift函数实现数据偏移的方法

    一.背景 当需要统计不同周期的变化情况时,需要使用数据偏移,在 Python 中使用 shift 函数实现. # 一阶差分 diff_num = num - num.shift(1) 二.实现 1.创 ...

  4. python dataframe遍历_对Python中DataFrame按照行遍历的方法

    对Python中DataFrame按照行遍历的方法 在做分类模型时候,需要在DataFrame中按照行获取数据以便于进行训练和测试. import pandas as pd dict=[[1,2,3, ...

  5. python print rdd_spark: RDD与DataFrame之间的相互转换方法

    DataFrame是一个组织成命名列的数据集.它在概念上等同于关系数据库中的表或R/Python中的数据框架,但其经过了优化.DataFrames可以从各种各样的源构建,例如:结构化数据文件,Hive ...

  6. Python pandas.DataFrame.combine_first函数方法的使用

    Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速 ...

  7. Python pandas.DataFrame.tz_localize函数方法的使用

    Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速 ...

  8. python dataframe index_Python将DataFrame的某一列作为index的方法

    Python将DataFrame的某一列作为index的方法 下面代码实现了将df中的column列作为index df.set_index(["Column"], inplace ...

  9. Python pandas.DataFrame.expanding函数方法的使用

    Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速 ...

  10. Python pandas.DataFrame.melt函数方法的使用

    Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速 ...

最新文章

  1. WF4 Beta,RC版文章总结
  2. 【并发编程】创建线程的四种方式
  3. 【js笔记】数组那些事[0]
  4. CVPR 2021 | 天津大学提出PISE:形状与纹理解耦的人体图像生成与编辑方法
  5. 日期格式无法识别 oracle,Oracle时间统计 - 不以物喜-不以己悲的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. STM32部分功能所在文件位置
  7. 吴恩达深度学习——自然语言处理与词嵌入
  8. JDK绘制文字的流程与代码分析
  9. Python 使用记事本、sublime、vim时报错:IndentationError: expected an indented block
  10. Android 各大市场更改APP名称
  11. HTML-滚动字幕的源代码(可作滚动公告)
  12. 字体在ppt中可以整体替换吗_在ppt中怎么批量替换字体和图片呢?
  13. Phalloidin——Acti-stain555鬼笔环肽研究
  14. vLang-基于模型的微信开发框架,使用Python
  15. 在Windows上编译FreeRDP
  16. 计算机视觉学习8:照相机模型与增强现实
  17. c++简单项目——连点器
  18. 关于spring与EHcache的集成
  19. 分享几个echarts复杂结构和图例字体中数字显示不同颜色
  20. Sona(莫队+离散化)

热门文章

  1. 安装Mendeley后Word中没有出现对应的Mendeley插件
  2. 2020年408真题_2020年港澳台联考真题——化学!
  3. 易基因|Genome Biol:DNA甲基化在玉米籽粒发育表观调控作用的研究新进展
  4. R语言实现非线性回归
  5. Delphi 读取注册表REG_MULTI_SZ类型,注意事项
  6. 【bzoj4200】[Noi2015]小园丁与老司机 dp+有上下界的网络流
  7. 计算机金融学校排名2015,金融学院2015级各专业排名情况统计表
  8. android sd 权限修改,真正免root的sd卡权限修改软件详细使用教程
  9. html分组标签tfoot,网页布局中 tbody标签与thead和tfoot标签使用
  10. 2023重庆科技学院计算机考研信息汇总