【问题标题】:numpy diff on a pandas Series大熊猫系列上的 numpy diff
【发布时间】:2012-11-21 06:55:19
【问题描述】:

我想在熊猫系列上使用 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])

我正在使用 pandas 0.9.1rc1、numpy 1.6.1。

【问题讨论】:

    标签: python numpy pandas


    【解决方案1】:

    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) 不起作用?因为在找到diff 之前,np 正在获取该系列的np.asanyarray()。像这样:

    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
    

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 1970-01-01
      • 2018-09-28
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 2017-10-29
      • 1970-01-01
      相关资源
      最近更新 更多