html中shift函数,pandas DataFrame.shift()函数

pandas DataFrame.shift()函数可以把数据移动指定的位数

period参数指定移动的步幅,可以为正为负.axis指定移动的轴,1为行,0为列.

eg: 有这样一个DataFrame数据:

importpandas 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 09

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 NaN1 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 NaN0.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

01.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

00.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

原文:https://www.cnblogs.com/liulangmao/p/9301032.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值