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语言的面相对象编程方式初步学习
Mar 12 Python
开源Web应用框架Django图文教程
Mar 09 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
Jul 10 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Python networkx包的实现
Feb 14 Python
如何使用python记录室友的抖音在线时间
Jun 29 Python
浅析Python面向对象编程
Jul 10 Python
python flappy bird小游戏分步实现流程
Feb 15 Python
教你怎么用python实现字符串转日期
May 24 #Python
pandas中DataFrame重置索引的几种方法
May 24 #Python
pandas取dataframe特定行列的实现方法
pytorch 如何使用amp进行混合精度训练
只需要这一行代码就能让python计算速度提高十倍
pytorch 如何使用float64训练
pytorch 使用半精度模型部署的操作
May 24 #Python
You might like
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
PHP+MYSQL的文章管理系统(二)
2006/10/09 PHP
虚拟主机中对PHP的特殊设置
2006/10/09 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
Python中的sort()方法使用基础教程
2017/01/08 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
Python实现批量压缩图片
2018/01/25 Python
windows下python安装小白入门教程
2018/09/18 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
树莓派实现移动拍照
2019/06/22 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
Python基于WordCloud制作词云图
2019/11/29 Python
Python ATM功能实现代码实例
2020/03/19 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
举例说明类变量和实例变量的区别
2016/06/30 面试题
工厂厂长的职责
2013/12/12 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
党员读书活动心得体会
2016/01/14 职场文书
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript