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之编写类之四再论继承
Oct 11 Python
python连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
简单解决Python文件中文编码问题
Nov 22 Python
python中的编码知识整理汇总
Jan 26 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
python实现贪吃蛇小游戏
Mar 21 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
python线程的几种创建方式详解
Aug 29 Python
python3实现微型的web服务器
Sep 03 Python
python的sys.path模块路径添加方式
Mar 09 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
教你怎么用python实现字符串转日期
May 24 #Python
pandas中DataFrame重置索引的几种方法
May 24 #Python
pandas取dataframe特定行列的实现方法
pytorch 如何使用amp进行混合精度训练
只需要这一行代码就能让python计算速度提高十倍
pytorch 如何使用float64训练
pytorch 使用半精度模型部署的操作
May 24 #Python
You might like
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
Vue常用的几个指令附完整案例
2018/11/06 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
python实现一次创建多级目录的方法
2015/05/15 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
广告学毕业生求职信
2014/01/30 职场文书
物业经理自我鉴定
2014/03/03 职场文书
安全生产责任书
2014/03/12 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
python中tkinter复选框使用操作
2021/11/11 Python