Pandas 比较两个数据帧,具体问题

Pandas 比较两个数据帧,具体问题,pandas,Pandas,我读了安迪对这个问题的回答 我有两个关于代码的问题,不幸的是我还没有50个代表对答案发表评论,所以我希望我能在这里得到一些帮助 [24]:changed=ne_stacked[ne_stacked]中的是做什么的? 我不确定df1=df[df]是做什么的,我似乎无法从熊猫医生那里得到答案,有人能给我解释一下吗 是np.where(df1!=df2)与pd.df.where(df1!=df2)相同。如果没有,有什么区别 问题1 ne_-stacked是一个pd系列,由True和False值组成,这

我读了安迪对这个问题的回答

我有两个关于代码的问题,不幸的是我还没有50个代表对答案发表评论,所以我希望我能在这里得到一些帮助

  • [24]:changed=ne_stacked[ne_stacked]中的
    是做什么的?
    我不确定df1=df[df]是做什么的,我似乎无法从熊猫医生那里得到答案,有人能给我解释一下吗

  • np.where(df1!=df2)
    pd.df.where(df1!=df2)
    相同。如果没有,有什么区别


  • 问题1

    ne_-stacked
    是一个
    pd系列
    ,由
    True
    False
    值组成,这些值指示
    df1
    df2
    不相等的位置

    ne_stacked[boolean_array]
    是一种过滤序列
    ne_stacked
    的方法,方法是消除
    ne_stacked
    boolean_array
    False
    的行,并保持
    ne_stacked
    boolean_array
    True
    的行

    碰巧,
    ne_-stacked
    也是一个布尔数组,因此可以用来过滤自身。他为什么要这么做?所以我们可以在过滤后看到索引的值

    因此
    ne_stacked[ne_stacked]
    ne_stacked
    的子集,只有
    True

    问题2

    np.其中

    np.where
    做两件事,如果你只传递一个类似于
    np.where(df1!=df2)
    的条件,你会得到一个数组的
    元组,其中第一个是所有行索引的引用,与所有列索引的
    元组的第二个元素一起使用。我通常是这样用的

    i, j = np.where(df1 != df2)
    
    现在我可以得到
    df1
    df2
    的所有元素,它们之间有如下区别

    df.values[i, j]
    
    或者我可以分配给那些单元格

    df.values[i, j] = -99
    
    或者其他很多有用的东西

    您还可以将
    np.where
    用作数组的if、then和else

    np.where(df1 != df2, -99, 99)
    
    df1!=其余部分为df2
    99

    df.where

    另一方面,
    df.where
    计算布尔值的第一个参数,并将大小相等的对象返回到
    df
    ,其中计算为
    True
    的单元格将保留,其余的单元格为
    np.nan
    df的第二个参数中传递的值。where

    df1.where(df1 != df2)
    

    它们是一样的吗?
    显然,它们不是“相同的”。但是你可以用同样的方法

    np.where(df1 != df2, df1, -99)
    
    应与相同

    df1.where(df1 != df2, -99).values
    
    df1.where(df1 != df2, -99).values