Pandas DataFrame DataFrame.where() 函式

Minahil Noor 2023年1月30日
  1. pandas.DataFrame.where() 的語法
  2. 示例程式碼:DataFrame.where()
  3. 示例程式碼:DataFrame.where() 指定一個值
  4. 示例程式碼:DataFrame.where() 使用多個條件
Pandas DataFrame DataFrame.where() 函式

Python Pandas DataFrame.where() 函式接受一個條件作為引數,併產生相應的結果。它對 DataFrame 的每個值進行條件檢查,並選擇接受條件的值。它的功能類似於 if-else 語句。不接受條件的值會被預設的 NaN 值代替。

pandas.DataFrame.where() 的語法

DataFrame.where(
    cond,
    other=NaN,
    inplace=False,
    axis=None,
    level=None,
    errors="raise",
    try_cast=False,
)

引數

這個函式有幾個引數。以上是所有引數的預設值。

cond 它是一個布林值 SeriesDataFrame,一個陣列樣的結構或一個可呼叫的結構。它代表了對 DataFrame 的每個值進行檢查的條件/條件。如果條件是 True,那麼原始值不會被替換。否則,就會被一個 NaN 值替換。
other 它是一個標量,Series/DataFrame,或一個可呼叫的函式。它表示如果條件為 False,將為原始值放置的值。
inplace 它是一個布林值。它告訴我們對資料的操作。如果為 True,它將自己進行修改。
axis 它是一個整數值。它告訴工作軸的行或列。
level 它是一個整數值。它說明了級別。
errors 它是一個字串。它講述了錯誤的情況。它接受兩個選項:raiseignore。如果它的值是 raise,那麼它允許提出異常。如果它的值是 ignore,那麼它將忽略異常,如果有錯誤,則返回原始物件。
try_cast 它是一個布林值。如果可能,它將函式的輸出轉換為原始輸入型別。

返回值

它根據條件返回改變後的 DataFrame

示例程式碼:DataFrame.where()

我們將在下一個程式碼示例中通過實現這個函式來進一步瞭解它。

import pandas as pd

dataframe=pd.DataFrame({
                        'A': 
                            {0: 60, 
                            1: 100, 
                            2: 80,
                            3: 78,
                            4: 95,
                            5: 45,
                            6: 67,
                            7: 12,
                            8: 23,
                            9: 50},
                        'B': 
                            {0: 90, 
                            1: 75, 
                            2: 82, 
                            3: 64, 
                            4: 45,
                            5: 35,
                            6: 74,
                            7: 52,
                            8: 93,
                            9: 18}
                        })

print(dataframe)

示例 DataFrame 就是。

     A   B
0   60  90
1  100  75
2   80  82
3   78  64
4   95  45
5   45  35
6   67  74
7   12  52
8   23  93
9   50  18

該函式有一個必選引數,即 cond

import pandas as pd

dataframe = pd.DataFrame(
    {
        "A": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95, 5: 45, 6: 67, 7: 12, 8: 23, 9: 50},
        "B": {0: 90, 1: 75, 2: 82, 3: 64, 4: 45, 5: 35, 6: 74, 7: 52, 8: 93, 9: 18},
    }
)

dataframe1 = dataframe.where(dataframe > 50)
print(dataframe1)

輸出:

       A     B
0   60.0  90.0
1  100.0  75.0
2   80.0  82.0
3   78.0  64.0
4   95.0   NaN
5    NaN   NaN
6   67.0  74.0
7    NaN  52.0
8    NaN  93.0
9    NaN   NaN

不大於 50 的值,即不滿足條件的值將被一個 NaN 值代替。

示例程式碼:DataFrame.where() 指定一個值

import pandas as pd

dataframe = pd.DataFrame(
    {
        "A": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95, 5: 45, 6: 67, 7: 12, 8: 23, 9: 50},
        "B": {0: 90, 1: 75, 2: 82, 3: 64, 4: 45, 5: 35, 6: 74, 7: 52, 8: 93, 9: 18},
    }
)

dataframe1 = dataframe.where(dataframe > 50, other=0)
print(dataframe1)

輸出:

     A   B
0   60  90
1  100  75
2   80  82
3   78  64
4   95   0
5    0   0
6   67  74
7    0  52
8    0  93
9    0   0

在這裡,不符合條件的值被使用者定義的值代替。

示例程式碼:DataFrame.where() 使用多個條件

import pandas as pd

dataframe = pd.DataFrame(
    {
        "A": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95, 5: 45, 6: 67, 7: 12, 8: 23, 9: 50},
        "B": {0: 90, 1: 75, 2: 82, 3: 64, 4: 45, 5: 35, 6: 74, 7: 52, 8: 93, 9: 18},
    }
)

dataframe1 = dataframe.where((dataframe == 80) | (dataframe < 50), other=0)
print(dataframe1)

輸出:

    A   B
0   0   0
1   0   0
2  80   0
3   0   0
4   0  45
5  45  35
6   0   0
7  12   0
8  23   0
9   0  18

返回的 DataFrame 包含符合這兩個條件的值。

相關文章 - Pandas DataFrame