千家信息网

pandas如何使用DataFrame.shift()函数

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章将为大家详细讲解有关pandas如何使用DataFrame.shift()函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。操作pandas DataFra
千家信息网最后更新 2025年11月13日pandas如何使用DataFrame.shift()函数

这篇文章将为大家详细讲解有关pandas如何使用DataFrame.shift()函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

操作

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

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

eg: 有这样一个DataFrame数据:

import pandas as pddata1 = 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  b0  0  91  1  82  2  73  3  64  4  55  5  46  6  37  7  28  8  19  9  0

如果想让 a和b的数据都往下移动一位:

data2 = data1.shift(axis=0)print data2     a    b0  NaN  NaN1  0.0  9.02  1.0  8.03  2.0  7.04  3.0  6.05  4.0  5.06  5.0  4.07  6.0  3.08  7.0  2.09  8.0  1.0

如果是在行上往右移动一位:

data3 = data1.shift(axis=1)print data3    a    b0 NaN  0.01 NaN  1.02 NaN  2.03 NaN  3.04 NaN  4.05 NaN  5.06 NaN  6.07 NaN  7.08 NaN  8.09 NaN  9.0

如果想往上或者往左移动,可以指定(periods=-1):

data4 = data1.shift(periods=-1, axis=0)print data4     a    b0  1.0  8.01  2.0  7.02  3.0  6.03  4.0  5.04  5.0  4.05  6.0  3.06  7.0  2.07  8.0  1.08  9.0  0.09  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  EXITSn0       0.0     0.01      23.0     8.02      18.0    18.03      71.0    54.04     170.0    44.05     214.0    42.06      87.0    11.07      10.0     3.08      36.0    89.09     153.0   333.0

关于"pandas如何使用DataFrame.shift()函数"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0