pandas DataFrame.shift()函数的具体使用


Posted in Python onMay 24, 2021

pandas DataFrame.shift()函数可以把数据移动指定的位数

period参数指定移动的步幅,可以为正为负.axis指定移动的轴,1为行,0为列.

eg: 有这样一个DataFrame数据:

import pandas as pd
data1 = pd.DataFrame({
    'a': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    'b': [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
})
print data1

   a  b
0  0  9
1  1  8
2  2  7
3  3  6
4  4  5
5  5  4
6  6  3
7  7  2
8  8  1
9  9  0

如果想让 a和b的数据都往下移动一位:

data2 = data1.shift(axis=0)
print data2

     a    b
0  NaN  NaN
1  0.0  9.0
2  1.0  8.0
3  2.0  7.0
4  3.0  6.0
5  4.0  5.0
6  5.0  4.0
7  6.0  3.0
8  7.0  2.0
9  8.0  1.0

如果是在行上往右移动一位:

data3 = data1.shift(axis=1)
print data3

    a    b
0 NaN  0.0
1 NaN  1.0
2 NaN  2.0
3 NaN  3.0
4 NaN  4.0
5 NaN  5.0
6 NaN  6.0
7 NaN  7.0
8 NaN  8.0
9 NaN  9.0

如果想往上或者往左移动,可以指定(periods=-1):

data4 = data1.shift(periods=-1, axis=0)
print data4

     a    b
0  1.0  8.0
1  2.0  7.0
2  3.0  6.0
3  4.0  5.0
4  5.0  4.0
5  6.0  3.0
6  7.0  2.0
7  8.0  1.0
8  9.0  0.0
9  NaN  NaN

一个例子:

这里有一组某车站各个小时的总进站人数和总出站人数的数据:

entries_and_exits = pd.DataFrame({
    'ENTRIESn': [3144312, 3144335, 3144353, 3144424, 3144594,
                 3144808, 3144895, 3144905, 3144941, 3145094],
    'EXITSn': [1088151, 1088159, 1088177, 1088231, 1088275,
               1088317, 1088328, 1088331, 1088420, 1088753]
})

要求计算每个小时该车站进出站人数

思路: 把第n+1小时的总人数-第n小时的总人数,就是这个小时里的进出站人数

entries_and_exits_hourly = entries_and_exits - entries_and_exits.shift(axis=0)print(entries_and_exits_hourly.fillna(0))   #最后用0来填补NaN

   ENTRIESn  EXITSn
0       0.0     0.0
1      23.0     8.0
2      18.0    18.0
3      71.0    54.0
4     170.0    44.0
5     214.0    42.0
6      87.0    11.0
7      10.0     3.0
8      36.0    89.0
9     153.0   333.0

到此这篇关于pandas DataFrame.shift()函数的具体使用的文章就介绍到这了,更多相关pandas DataFrame.shift()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
实例Python处理XML文件的方法
Aug 31 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
Python脚本完成post接口测试的实例
Dec 17 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
django 连接数据库 sqlite的例子
Aug 14 Python
Python变量作用域LEGB用法解析
Feb 04 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
Pytorch mask-rcnn 实现细节分享
Jun 24 Python
浅谈Python中对象是如何被调用的
Apr 06 Python
教你怎么用python实现字符串转日期
May 24 #Python
pandas中DataFrame重置索引的几种方法
May 24 #Python
pandas取dataframe特定行列的实现方法
pytorch 如何使用amp进行混合精度训练
只需要这一行代码就能让python计算速度提高十倍
pytorch 如何使用float64训练
pytorch 使用半精度模型部署的操作
May 24 #Python
You might like
Zerg剧情介绍
2020/03/14 星际争霸
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
PHP的博客ping服务代码
2012/02/04 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
九步学会Python装饰器
2015/05/09 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
django之自定义软删除Model的方法
2019/08/14 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python换行与不换行的输出实例
2020/02/19 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
Python 爬虫性能相关总结
2020/08/03 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
linux面试题参考答案(11)
2016/11/26 面试题
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
活动总结结尾怎么写
2014/08/30 职场文书
法人授权委托书
2014/09/16 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
国博复兴之路观后感
2015/06/02 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
小程序实现文字循环滚动动画
2021/06/14 Javascript
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS