pandas 系列的numpy差异 [英] numpy diff on a pandas Series
本文介绍了 pandas 系列的numpy差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在pandas系列上使用numpy.diff.我是对的,这是错误吗?还是我做错了?
I want to use numpy.diff on a pandas Series. Am I right that this is a bug? Or am I doing it wrong?
In [163]: s = Series(np.arange(10))
In [164]: np.diff(s)
Out[164]:
0 NaN
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 NaN
In [165]: np.diff(np.arange(10))
Out[165]: array([1, 1, 1, 1, 1, 1, 1, 1, 1])
我正在使用pandas 0.9.1rc1,numpy 1.6.1.
I am using pandas 0.9.1rc1, numpy 1.6.1.
推荐答案
Pandas像这样实现diff
:
Pandas implements diff
like so:
In [3]: s = pd.Series(np.arange(10))
In [4]: s.diff()
Out[4]:
0 NaN
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
直接使用np.diff
:
In [7]: np.diff(s.values)
Out[7]: array([1, 1, 1, 1, 1, 1, 1, 1, 1])
In [8]: np.diff(np.array(s))
Out[8]: array([1, 1, 1, 1, 1, 1, 1, 1, 1])
那么np.diff(s)
为什么不起作用?因为np在找到diff
之前先取序列的np.asanyarray()
.像这样:
So why doesn't np.diff(s)
work? Because np is taking np.asanyarray()
of the series before finding the diff
. Like so:
In [25]: a = np.asanyarray(s)
In [26]: a
Out[26]:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
In [27]: np.diff(a)
Out[27]:
0 NaN
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 NaN
这篇关于 pandas 系列的numpy差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文