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

use*_*146 2 python dataframe pandas

当我检查这种pandas dataframe.ne方法时,文档说它是一个包装,可以进行灵活比较。我在熊猫文档中找不到任何适当的示例。为什么我们要使用它,df.ne以及如何在进行数据操作时使它变得更容易或更灵活?是否可以给我一个使用df.ne或不df.ne使用相同方法的示例,这将有助于我理解?

Hal*_*Ali 5

检查源的实施DataFrame.ne。代码不太难理解。

本质上,DataFrame.ne提供了一种执行不平等比较的更灵活的方法。您还可以指定其他参数,这在使用!=运算符时是不可能的。

例子:

  1. DataFrame.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
    
    Run Code Online (Sandbox Code Playgroud)

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

    ValueError: Can only compare identically-labeled DataFrame objects
    
    Run Code Online (Sandbox Code Playgroud)
  2. DataFrame.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
    
    Run Code Online (Sandbox Code Playgroud)

    后者也可以解决df0 != s1,但前者则不能

  3. DataFrame.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
    
    Run Code Online (Sandbox Code Playgroud)