12

pandas シリーズで numpy.diff を使用したい。これはバグだというのは正しいですか?それとも私はそれを間違っていますか?

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])

私はパンダ0.9.1rc1、numpy 1.6.1を使用しています。

4

1 に答える 1

15

Pandas はdiff次のように実装します。

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 は をnp.asanyarray()見つける前にシリーズを取得しているためdiffです。そのようです:

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
于 2012-12-03T18:41:47.330 に答える