代码之家  ›  专栏  ›  技术社区  ›  user96564

什么是pandas dataframe.ne方法以及为什么使用它?

  •  1
  • user96564  · 技术社区  · 6 年前

    当我检查熊猫的时候 dataframe.ne 方法,文档说它是一个灵活比较的包装器。我在熊猫文档中找不到任何关于这一点的适当例子。为什么要用这个 df.ne 在进行数据操作时,它是如何变得更容易或更灵活的?能给我举个例子吗 新英格兰 而且没有 新英格兰 对于同样的方法,这将有助于我理解?

    3 回复  |  直到 6 年前
        1
  •  5
  •   Haleemur Ali    6 年前

    检查 source 用于执行 DataFrame.ne . 代码并不难理解。

    基本上, 数据帧.ne 提供了一种更灵活的不平等比较方法。您还可以指定在使用 != 操作员。

    示例:

    1. 数据帧.ne 允许在索引不对齐的两个数据帧之间进行比较

      df0 = pd.DataFrame({'a': [1,2,3], 'b': [0.1, 0.3, 0.9], 'c': [2,4,6]}, index=list('abc'))
      
      df1 = pd.DataFrame({'a': [3,2,1], 'b': [0.9, 0.3, 0.1], 'c': [6,4,2]}, index=list('cba'))
      
      df0.ne(df1)
      # outputs:
             a      b      c
      a  False  False  False
      b  False  False  False
      c  False  False  False
      

      但是 df0 != df1 引发以下错误:

      ValueError: Can only compare identically-labeled DataFrame objects
      
    2. 数据帧.ne 接受序列和参数 axis level .

      s1 = pd.Series([1,2,3], index=list('abc'))
      
      df0.ne(s1, axis=0)
             a     b     c
      a  False  True  True
      b  False  True  True
      c  False  True  True
      
      df0.ne(s1, axis=1)
      
             a     b     c
      a  False  True  True
      b   True  True  True
      c   True  True  True
      

      后者可以通过 df0 != s1 还有,但不是前者

    3. 数据帧.ne 还接受一个标量作为参数

      df0.ne(1)
      # outputs a dataframe where all values are true
             a     b     c
      a  False  True  True
      b   True  True  True
      c   True  True  True
      
        2
  •  1
  •   jits_on_moon    6 年前

    基本上, ne 代表(不等于)。这个方法是核心python的一部分 operator overloading implementation 名为uu ne_uuu()的神奇方法。

    pandas直接从核心python实现中派生出这个方法。并为系列和数据帧定制了它,用于状态检查。 它返回布尔值以检查条件。

    示例:

    ne(a, b) is equivalent to a != b
    

    系列代码示例:

    >>> a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
    >>> b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
    >>> a
    a    1.0
    b    1.0
    c    1.0
    d    NaN
    dtype: float64
    >>> b
    a    1.0
    b    NaN
    d    1.0
    e    NaN
    dtype: float64
    >>> a.ne(b,fill_value=0)
    a    False
    b     True
    c     True
    d     True
    e     True
    dtype: bool
    >>> 
    
        3
  •  1
  •   SudipM    6 年前

    df.ne也用于要执行的任何列检查。 例子:

    df=pd.DataFrame({'one' : [1., 2., 3., 4.],'two' : [4., 3., 2., 1.]})
    
        one  two
        0  1.0  4.0
        1  2.0  3.0
        2  3.0  2.0
        3  4.0  1.0
    
    not3=df['two'].ne(3).sum()
    

    NOT3=3