循环遍历 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
我会分别处理第一个和最后一个元素,所以现在让我们忽略它们。
这个怎么样?
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
这些对你有用吗?
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