Pandas DataFrame DataFrame.isin() 函式

Jinku Hu 2023年1月30日
  1. pandas.DataFrame.isin(values) 語法
  2. 示例程式碼:DataFrame.isin()Iterable 為輸入
  3. 示例程式碼:DataFrame.isin() 以字典為輸入
  4. 示例程式碼:DataFrame.isin()Series 為輸入
  5. 示例程式碼:DataFrame.isin()DataFrame 為輸入
Pandas DataFrame DataFrame.isin() 函式

pandas.DataFrame.isin(values) 函式檢查呼叫者 DataFrame 中的每個元素是否包含輸入的 values 中指定的值。

pandas.DataFrame.isin(values) 語法

DataFrame.isin(values)

引數

values iterable-list, tuple, set 等。
字典
Series
DataFrame

返回值

它返回一個與呼叫者 DataFrame 相同維度的布林值的 DataFrame,表示每個元素是否包含輸入的 values

示例程式碼:DataFrame.isin()Iterable 為輸入

當 Python iterable 為輸入時,Pandas DataFrame.isin() 函式檢查 DataFrame 中的每個值是否包含 iterable 中的任何值。

import pandas as pd

df = pd.DataFrame({'Sales': [100, 200], 'Profit': [200, 400]})

df = df.isin([200, 400])
print(df)

呼叫者 DataFrame

   Sales  Profit
0    100     200
1    200     400

輸出:

   Sales  Profit
0  False    True
1   True    True

這裡,200 和 400 存在於列表 [200,400] 中,因此,在返回的 DataFrame 中,原值為 200 和 400 的值為 True100 不在列表 [200,400] 中,因此,其位置的值返回 False

示例程式碼:DataFrame.isin() 以字典為輸入

如果輸入值型別是字典,isin() 函式不僅檢查值,而且檢查鍵值。只有當列名與鍵相同,且單元格值包含在字典的 value 中時,它才返回 True

import pandas as pd

df = pd.DataFrame({"Sales": [100, 200], "Profit": [200, 400]})

df = df.isin({"Sales": [200, 400]})
print(df)

輸出:

   Sales  Profit
0  False   False
1   True   False

在第一個例子中,Profit 列的值都是 True,但在這個例子中是 False,因為列名與輸入字典中的鍵不同。

如果值包含在字典的值中–[200,400],它將返回 Sales 列中的 True

示例程式碼:DataFrame.isin()Series 為輸入

如果輸入值型別是 Pandas 的 Seriesisin() 函式檢查每列元素是否與輸入的 Series 的同一索引中的值相同。

import pandas as pd

df = pd.DataFrame({"Sales": [100, 200], "Profit": [200, 400]})

valueSeries = pd.Series([200, 400])
print(valueSeries)

df = df.isin(valueSeries)
print(df)

輸出:

0    200
1    400
dtype: int64
   Sales  Profit
0  False    True
1  False    True

Profit 列中的元素與輸入的 Series 中的元素元素相同,因此,該列中的兩個元素都返回 True

示例程式碼:DataFrame.isin()DataFrame 為輸入

如果輸入值型別是 Pandas 的 DataFrame.isin() 函式檢查呼叫者 DataFrame 中的每個元素是否與輸入 DataFrame 中相同位置的元素相同。

當數值相同時返回 True,如果不匹配則返回 False

import pandas as pd

df = pd.DataFrame({"Sales": [100, 200], "Profit": [200, 400]})
print(df)

valueDf = pd.DataFrame({"Sales": [100, 200], "Profit": [200, 300]})
print(valueDf)

df = df.isin(valueDf)
print(df)

輸出:

   Sales  Profit
0    100     200
1    200     400
   Sales  Profit
0    100     200
1    200     300
   Sales  Profit
0   True    True
1   True   False

位置 (1, 1) 的值返回 False,因為呼叫者 DataFrame 和輸入 DataFrame 的值不同。

警告
isin() 函式不僅從元素上檢查值,而且還檢查列名是否相同。如果列名不同,即使這兩個 DataFrames 中的值相同,它也返回 False
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - Pandas DataFrame