python对列进行平移变换的方法(shift)


Posted in Python onJanuary 10, 2019

在进行数据操作时, 经常会碰到基于同一列进行错位相加减的操作, 即对某一列进行向上或向下平移(shift).

往常, 我们都会使用循环进行操作, 但经过查阅相关资料, 发现结合pandas里的groupby和shift两个函数就能轻松实现上述要求.

#创建样例数据
temp = pd.DataFrame({'id':[1,1,1,2,2,3],'value':[1,2,3,4,5,6]});temp
Out[1]:
  id value
0  1   1
1  1   2
2  1   3
3  2   4
4  2   5
5  3   6
temp['value_shift'] = temp.groupby('id')['value'].shift(1);temp
Out[180]: 
  id value value_shift
0  1   1     NaN
1  1   2     1.0
2  1   3     2.0
3  2   4     NaN
4  2   5     4.0
5  3   6     NaN

temp['value_shift_1'] = temp.groupby('id')['value'].shift(-1);temp
Out[181]: 
  id value value_shift value_shift_1
0  1   1     NaN      2.0
1  1   2     1.0      3.0
2  1   3     2.0      NaN
3  2   4     NaN      5.0
4  2   5     4.0      NaN
5  3   6     NaN      NaN

通过shift函数里面的值来控制向前还是向后偏移, 缺少的值会填充NaN.

groupby函数里的参数控制基于什么字段进行shift.

官方文档 这里是以index为基准.

以上这篇python对列进行平移变换的方法(shift)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python subprocess模块学习总结
Mar 13 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
Python整数对象实现原理详解
Jul 01 Python
Python整数与Numpy数据溢出问题解决
Sep 11 Python
Python 文件数据读写的具体实现
Jan 24 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python实现人脸签到系统
Apr 13 Python
Python 解析xml文件的示例
Sep 29 Python
pycharm无法导入lxml的解决办法
Mar 31 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 Python
对python模块中多个类的用法详解
Jan 10 #Python
python 图像平移和旋转的实例
Jan 10 #Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 #Python
详解pandas安装若干异常及解决方案总结
Jan 10 #Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 #Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 #Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 #Python
You might like
php调用mysql存储过程
2007/02/14 PHP
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
JS案例分享之金额小写转大写
2014/05/15 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
python实现人人网登录示例分享
2014/01/19 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
网吧消防安全制度
2014/01/28 职场文书
师范学院教师自荐书
2014/01/31 职场文书
转预备党员政审材料
2014/02/06 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
放假通知
2015/04/14 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书