當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas DataFrame where方法用法及代碼示例


Pandas DataFrame.where(~) 使用布爾掩碼有選擇地替換源 DataFrame 中的值。

參數

1.cond | booleanarray-likecallable | optional

布爾掩碼,它是類似數組的結構(例如 Series 和 DataFrame),包含 TrueFalse 作為其條目。

  • 如果一個條目是True,則源中對應的值DataFrame將保持原樣.

  • 如果一個條目如果False,則源中對應的值DataFrame將被替換通過那個在other.

如果一個callable傳遞後,該函數將 DataFrame 作為參數並返回布爾值 DataFrame。此可調用不得修改源DataFrame.

2. other | scalarSeriesDataFramefunction | optional

用於替換 cond 中具有 True 的條目的值。

如果通過callable。然後該函數接受要替換的值作為參數,並返回一個新的標量、Series 或 DataFrame 作為替換器。再次強調,此可調用不得修改源 DataFrame。

3. inplace | boolean | optional

是否就地執行該方法。就地方法意味著它們將直接修改源DataFrame,而不創建和返回新的 DataFrame。默認情況下,inplace=False

4. axis | int | optional

執行該方法所沿的軸。默認情況下,axis=None

5. level | int | optional

執行該方法的級別。僅當您的源 DataFrame 是多索引時,這才有意義。

6. errors | string | optional

是否引發或抑製錯誤:

說明

"raise"

允許出現錯誤。

"ignore"

發生錯誤時,返回源DataFrame。

默認情況下,errors="raise"

7. try_cast | boolean | optional

是否將結果 DataFrame 轉換為源 DataFrame 的類型。默認情況下,try_cast=False

返回值

一個DataFrame

例子

基本用法

考慮以下 DataFrame :

df = pd.DataFrame({"A":[3,4],"B":[5,6]})
df



   A  B
0  3  5
1  4  6

假設我們有以下 DataFrame 作為布爾掩碼:

df_mask = pd.DataFrame({"A":[True,False],"B":[False,True]})
df_mask



   A      B
0  True   False
1  False  True

然後,我們調用 where(~) 來選擇性地替換 df 中的值,其中 df_mask 中的相應條目是 False

df.where(df_mask, 10)



   A   B
0  3   10
1  10  6

傳入可調用的 cond

考慮與之前相同的DataFrame:

df = pd.DataFrame({"A":[3,4],"B":[5,6]})
df



   A  B
0  3  5
1  4  6

我們還可以傳入一個函數,如下所示,而不是指定一個類似數組的掩碼作為第一個參數:

def foo(my_df):
 return my_df > 4
df.where(foo, 10)



   A   B
0  10  5
1  10  6

這裏,函數foo接受整個DataFrame作為參數,並返回布爾值DataFrame。同樣,布爾值 True 意味著相應的值將保持不變,同時對 False 進行替換。

請注意,前麵的代碼片段可以使用 lambda 緊湊地編寫:

df.where(lambda x : x > 4, 10)



   A   B
0  10  5
1  10  6

傳遞給其他人可調用

考慮與之前相同的DataFrame:

df = pd.DataFrame({"A":[3,4],"B":[5,6]})
df



   A  B
0  3  5
1  4  6

假設我們有一個如下所示的掩碼:

my_mask = [[True,False],[True,False]]
my_mask



[[True, False],
 [True, False]]

讓我們為 other 參數傳遞一個可調用函數:

df.where(my_mask, lambda x : x + 10)



   A  B
0  3  15
1  4  16

可調用函數接受要替換的值作為參數,並返回新的替換器。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | where method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。