pandas中shift和diff函数关系

来源:互联网 发布:下载word2010软件 编辑:程序博客网 时间:2024/05/21 12:09

通过?pandas.DataFrame.shift命令查看帮助文档

Signature: pandas.DataFrame.shift(self, periods=1, freq=None, axis=0)Docstring:Shift index by desired number of periods with an optional time freq
该函数主要的功能就是使数据框中的数据移动,若freq=None时,根据axis的设置,行索引数据保持不变,列索引数据可以在行上上下移动或在列上左右移动;若行索引为时间序列,则可以设置freq参数,根据periods和freq参数值组合,使行索引每次发生periods*freq偏移量滚动,列索引数据不会移动

①对于DataFrame的行索引是日期型,行索引发生移动,列索引数据不变

In [2]: import pandas as pd   ...: import numpy as np   ...: df = pd.DataFrame(np.arange(24).reshape(6,4),index=pd.date_range(start=   ...: '20170101',periods=6),columns=['A','B','C','D'])   ...: df   ...:Out[2]:             A   B   C   D2017-01-01   0   1   2   32017-01-02   4   5   6   72017-01-03   8   9  10  112017-01-04  12  13  14  152017-01-05  16  17  18  192017-01-06  20  21  22  23In [3]: df.shift(2,axis=0,freq='2D')Out[3]:             A   B   C   D2017-01-05   0   1   2   32017-01-06   4   5   6   72017-01-07   8   9  10  112017-01-08  12  13  14  152017-01-09  16  17  18  192017-01-10  20  21  22  23In [4]: df.shift(2,axis=1,freq='2D')Out[4]:             A   B   C   D2017-01-05   0   1   2   32017-01-06   4   5   6   72017-01-07   8   9  10  112017-01-08  12  13  14  152017-01-09  16  17  18  192017-01-10  20  21  22  23In [5]: df.shift(2,freq='2D')Out[5]:             A   B   C   D2017-01-05   0   1   2   32017-01-06   4   5   6   72017-01-07   8   9  10  112017-01-08  12  13  14  152017-01-09  16  17  18  192017-01-10  20  21  22  23
结论:对于时间索引而言,shift使时间索引发生移动,其他数据保存原样,且axis设置没有任何影响

②对于DataFrame行索引为非时间序列,行索引数据保持不变,列索引数据发生移动

In [6]: import pandas as pd   ...: import numpy as np   ...: df = pd.DataFrame(np.arange(24).reshape(6,4),index=['r1','r2','r3','r4'   ...: ,'r5','r6'],columns=['A','B','C','D'])   ...: df   ...:Out[6]:     A   B   C   Dr1   0   1   2   3r2   4   5   6   7r3   8   9  10  11r4  12  13  14  15r5  16  17  18  19r6  20  21  22  23In [7]: df.shift(periods=2,axis=0)Out[7]:       A     B     C     Dr1   NaN   NaN   NaN   NaNr2   NaN   NaN   NaN   NaNr3   0.0   1.0   2.0   3.0r4   4.0   5.0   6.0   7.0r5   8.0   9.0  10.0  11.0r6  12.0  13.0  14.0  15.0In [8]: df.shift(periods=-2,axis=0)Out[8]:       A     B     C     Dr1   8.0   9.0  10.0  11.0r2  12.0  13.0  14.0  15.0r3  16.0  17.0  18.0  19.0r4  20.0  21.0  22.0  23.0r5   NaN   NaN   NaN   NaNr6   NaN   NaN   NaN   NaNIn [9]: df.shift(periods=2,axis=1)Out[9]:     A   B     C     Dr1 NaN NaN   0.0   1.0r2 NaN NaN   4.0   5.0r3 NaN NaN   8.0   9.0r4 NaN NaN  12.0  13.0r5 NaN NaN  16.0  17.0r6 NaN NaN  20.0  21.0In [10]: df.shift(periods=-2,axis=1)Out[10]:       A     B   C   Dr1   2.0   3.0 NaN NaNr2   6.0   7.0 NaN NaNr3  10.0  11.0 NaN NaNr4  14.0  15.0 NaN NaNr5  18.0  19.0 NaN NaNr6  22.0  23.0 NaN NaN
通过?pandas.DataFrame.diff命令查看帮助文档,发现和shift函数形式一样

Signature: pd.DataFrame.diff(self, periods=1, axis=0)Docstring:1st discrete difference of object

下面看看diff函数和shift函数之间的关系

In [13]: df.diff(periods=2,axis=0)Out[13]:      A    B    C    Dr1  NaN  NaN  NaN  NaNr2  NaN  NaN  NaN  NaNr3  8.0  8.0  8.0  8.0r4  8.0  8.0  8.0  8.0r5  8.0  8.0  8.0  8.0r6  8.0  8.0  8.0  8.0In [14]: df -df.diff(periods=2,axis=0)Out[14]:       A     B     C     Dr1   NaN   NaN   NaN   NaNr2   NaN   NaN   NaN   NaNr3   0.0   1.0   2.0   3.0r4   4.0   5.0   6.0   7.0r5   8.0   9.0  10.0  11.0r6  12.0  13.0  14.0  15.0In [15]: df.shift(periods=2,axis=0)Out[15]:       A     B     C     Dr1   NaN   NaN   NaN   NaNr2   NaN   NaN   NaN   NaNr3   0.0   1.0   2.0   3.0r4   4.0   5.0   6.0   7.0r5   8.0   9.0  10.0  11.0r6  12.0  13.0  14.0  15.0



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 京东退货快递显示签收怎么办 买家已付款卖家不发货怎么办 两个地址发给买家退货怎么办 超市盘点少了货怎么办 月盘点出错领导要理由怎么办 做外汇被坑怎么办?亏损二十多万 iphone储存空间已满怎么办 icloud储存空间将满怎么办 手机店没人进店怎么办 淘宝退货运单填错了怎么办 淘宝快递单号填错了怎么办 拼多多48小时不发货怎么办 想开化妆品店没有经验怎么办 淘宝卖家收钱不发货怎么办 nike拖鞋买小了怎么办 京东换货没货了怎么办 淘宝申请退货退款卖家不处理怎么办 家具连接扣坏了怎么办 锅炉炉水碱度低怎么办 快递里面的东西少了怎么办 很多闲置在家里的东西怎么办 闲鱼买的东西与原物不对怎么办 退款后又发货了怎么办 淘宝卖家不发货也不退款怎么办 已经申请退款卖家仍发货怎么办 淘宝卖家已发货买家申请退款怎么办 爱上街App不发货怎么办 阿里卖家虚假发货怎么办 联系不到淘宝卖家怎么办 没货买家不退款怎么办 买到假货没有发票怎么办 淘宝买的手机发票怎么办 淘宝上的发票丢了怎么办 淘宝买的东西电子发票怎么办 发票联给错顾客怎么办 客人让多给发票怎么办 13岁早晨上学叫不醒怎么办 官换机过保坏了怎么办 官换机在保坏了怎么办 留学生美国东西寄回国怎么办便宜 淘宝东西没到收货了怎么办