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()函数相关推荐

  1. python中shift函数_pandas DataFrame.shift()函数

    pandas DataFrame.shift()函数可以把数据移动指定的位数 period参数指定移动的步幅,可以为正为负.axis指定移动的轴,1为行,0为列. eg: 有这样一个DataFrame ...

  2. pandas使用shift函数对数数据进行向上偏移(-1)或者向下偏移(1)、索引不移动,移动之后无值的赋值为NaN、将原数据列与偏移后的数据列相加生成新的数据列

    pandas使用shift函数对数数据进行向上偏移(-1)或者向下偏移(1).索引不移动,移动之后无值的赋值为NaN.将原数据列与偏移后的数据列相加生成新的数据列 目录

  3. Python之Pandas:pandas.DataFrame.to_csv函数的简介、具体案例、使用方法详细攻略

    Python之Pandas:pandas.DataFrame.to_csv函数的简介.具体案例.使用方法详细攻略 目录 pandas.DataFrame.to_csv函数的简介 pandas.to_c ...

  4. python dataframe loc函数_python pandas.DataFrame.loc函数使用详解

    官方函数 DataFrame.loc Access a group of rows and columns by label(s) or a boolean array. .loc[] is prim ...

  5. python数据去重的函数_python pandas dataframe 去重函数的具体使用

    今天笔者想对pandas中的行进行去重操作,找了好久,才找到相关的函数 先看一个小例子 from pandas import Series, DataFrame data = DataFrame({' ...

  6. [转载] pandas DataFrame apply()函数(1)

    参考链接: Pandas DataFrame中的转换函数 之前已经写过pandas DataFrame applymap()函数 还有pandas数组(pandas Series)-(5)apply方 ...

  7. Python pandas.DataFrame.combine_first函数方法的使用

    Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速 ...

  8. Python pandas.DataFrame.tz_localize函数方法的使用

    Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速 ...

  9. pandas学习笔记:pandas.Dataframe.rename()函数用法

    pandas学习笔记:pandas.Dataframe.rename()函数用法 pandas.Dataframe.rename()函数主要是用来修改Dataframe数据的行名和列名. 主要用到的参 ...

最新文章

  1. php pthread 实例,php 真正的多线程 pthread
  2. jmeter随机参数化不重复_接口测试参数化详解(Jmeter)
  3. ORACLE TEXT FILTER PREFERENCE(四)
  4. Python 命令汇总
  5. 理想汽车2021年Q4盈利2.955亿元 CTO王凯离职
  6. Web开发之二:什么是前端、什么是后端
  7. BZOJ2654 Tree
  8. 5.3 Zend_Log_Filter
  9. 使用JSPanda扫描客户端原型污染漏洞
  10. [系统安全] 二十.PE数字签名之(上)什么是数字签名及Signtool签名工具详解
  11. http 415 错误
  12. java面试(1)如何防止恶意攻击短信验证码接口
  13. 《生与死》(瓦特·兰德)
  14. 深圳市自助图书馆详细分布地址
  15. WPF学习第十二集-绘图和动画
  16. 图片隐写之LSB(Least Significant Bit)原理及其代码实现
  17. java.lang.Short常用方法
  18. 第四届传智杯(初赛B组) | python题解思路
  19. 【厚积薄发系列】C++项目总结21—VS远程调试技巧分享
  20. 会说话:如何求人办事会说场面话

热门文章

  1. Python NumPy教程
  2. mac安装rstudio_在Windows / Linux / Mac OS上安装R和RStudio入门
  3. web前端面试:不做面试“海王”,一份资料就可成功上岸!
  4. C++/Python/Java/C,四大语言对比,你更喜欢哪种?
  5. Java基础篇:构造函数重载
  6. 第二单元总结——多线程设计
  7. 戴尔PowerEdge 4路服务器全面升级 实现企业应用与核心业务工作负载的优异性能...
  8. 如何实现一个HTML5 RPG游戏引擎——第五章,实现人物和人物特效
  9. Using C++ in Eclipse - Program file not Specified problem
  10. Ubuntu下安装VirtualBox和Android 安装到虚拟机中