問題1
ne_stacked
是pd.Series
即由True
和False
值指示其中df1
和df2
不相等。
ne_stacked[boolean_array]
是通過消除的ne_stacked
的行,其中boolean_array
是False
並保持的ne_stacked
的行,其中boolean_array
是True
過濾系列ne_stacked
一種方式。
恰巧ne_stacked
也是一個布爾數組,所以可以用來過濾自己。爲什麼要這樣做?所以我們可以看到索引的值在我們過濾後是什麼。
所以ne_stacked[ne_stacked]
是ne_stacked
的子集,只有True
的值。
問題2
np.where
np.where
做兩件事情,如果你只通過有條件像np.where(df1 != df2)
,你得到陣列的tuple
,其中第一是所有的行指數的參考與tuple
的第二個元素一起使用,它是對所有列索引的引用。我通常使用這樣
i, j = np.where(df1 != df2)
現在我可以在或在其中也有像
df.values[i, j]
或者我可以分配到這些細胞的差異df1
所有元素df2
得到
df.values[i, j] = -99
或許多其他有用的東西。
您也可以在所有的地方,在df1 != df2
和99
使用np.where
爲IF,那麼,其他數組
np.where(df1 != df2, -99, 99)
要產生一個數組大小相同df1
或df2
,你必須-99
休息。
df.where
在另一方面df.where
評估布爾值的第一參數,並返回相同大小的一個目的是df
,其中該評估以True
的細胞保持其餘要麼np.nan
或值在df.where
df1.where(df1 != df2)
或者
0的第二個參數傳遞
df1.where(df1 != df2, -99)
他們是一樣的嗎?
顯然他們不是「相同」。但是你可以用它們同樣
np.where(df1 != df2, df1, -99)
應該是相同的
df1.where(df1 != df2, -99).values