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中处理日期和时间的基本知识点整理汇总
May 22 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
约瑟夫问题的Python和C++求解方法
Aug 20 Python
详解django三种文件下载方式
Apr 06 Python
python实现机器学习之元线性回归
Sep 06 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
python将dict中的unicode打印成中文实例
May 11 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
Python 合并拼接字符串的方法
Jul 28 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
python程序的组织结构详解
Dec 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
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python性能提升之延迟初始化
2016/12/04 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
python读取指定字节长度的文本方法
2019/08/27 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
财产公证书格式
2014/04/10 职场文书
应聘会计求职信
2014/06/11 职场文书
计划生育诚信协议书
2014/11/02 职场文书
2014年科室工作总结
2014/11/20 职场文书
优秀党员推荐材料
2014/12/18 职场文书
2016大学军训心得体会
2016/01/11 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js