Pandas DataFrame DataFrame.isin() 函数

Jinku Hu 2023年1月30日 2020年6月17日
  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
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相关文章 - Pandas DataFrame