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交换变量
Sep 06 Python
九步学会Python装饰器
May 09 Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
py-charm延长试用期限实例
Dec 22 Python
详解Python多线程下的list
Jul 03 Python
详解pytorch tensor和ndarray转换相关总结
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
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
mongodb和php的用法详解
2019/03/25 PHP
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
详解Python3中yield生成器的用法
2015/08/20 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
python日志logging模块使用方法分析
2019/05/23 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
学习十八大精神心得体会
2013/12/31 职场文书
工作自我评价怎么写
2014/01/29 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
护理专业求职信
2014/06/15 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫