在循环通过Pandas系列时获取下一个和上一个条目

时间:2013-04-23 00:55:51

标签: python pandas

如何在循环Pandas系列时获取下一个和上一个迭代值?我想计算下一个和上一个索引之间的差异,如下所示:

data = pd.Series([1,2,4,2,5], index = [100,120,130,140,170])
for idx in data.iteritems():
    delta = idx.next()[0] - idx.previous()[0]
    # do other stuff

我会分别对待第一个和最后一个元素,所以现在让我们忽略它们。

2 个答案:

答案 0 :(得分:2)

这个怎么样?

In [55]: for i in range(data.size):
   ....:     print 'now', data[data.index[i]]
   ....:     if i==0: continue
   ....:     if i==data.size-1: continue
   ....:     print '  last: ', data[data.index[i-1]]
   ....:     print '  next: ', data[data.index[i+1]]
   ....:     

now 1
now 2
  last:  1
  next:  4
now 4
  last:  2
  next:  2
now 2
  last:  4
  next:  5
now 5

答案 1 :(得分:1)

这些对你有用吗?

In [32]: data = pd.Series([1,2,4,2,5], index = [100,120,130,140,170])

In [33]: data
Out[33]: 
100    1
120    2
130    4
140    2
170    5
dtype: int64

In [34]: data.diff()
Out[34]: 
100   NaN
120     1
130     2
140    -2
170     3
dtype: float64

In [35]: data-data.shift(1)
Out[35]: 
100   NaN
120     1
130     2
140    -2
170     3
dtype: float64

In [36]: data-data.shift(-1)
Out[36]: 
100    -1
120    -2
130     2
140    -3
170   NaN
dtype: float64