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给文本创立向量空间模型的教程
Apr 23 Python
如何在Python中编写并发程序
Feb 27 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
Apr 13 Python
django 多数据库配置教程
May 30 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
Python continue继续循环用法总结
Jun 10 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 Python
python日期与时间戳的各种转换示例
Feb 12 Python
TFRecord文件查看包含的所有Features代码
Feb 17 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使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
js select常用操作控制代码
2010/03/16 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
基于require.js的使用(实例讲解)
2017/09/07 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
Python处理字符串之isspace()方法的使用
2015/05/19 Python
Django自定义分页效果
2017/06/27 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
《尊严》教学反思
2014/02/11 职场文书
科研课题实施方案
2014/03/18 职场文书
森林病虫害防治方案
2014/06/02 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
干部培训工作总结2015
2015/05/25 职场文书
赤壁观后感(2)
2015/06/15 职场文书
建议书的格式及范文
2015/09/14 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
Redis性能监控的实现
2021/07/09 Redis
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
python画条形图的具体代码
2022/04/20 Python