pandas.DataFrame.isin#

DataFrame.isin(values)[源代码]#

DataFrame 中的每个元素是否包含在 values 中。

参数:
values可迭代对象, Series, DataFrame 或 dict

当且仅当所有标签都匹配时,结果才会在某个位置为真。如果 values 是一个 Series,那它就是索引。如果 values 是一个 dict,那么键必须是列名,这些列名必须匹配。如果 values 是一个 DataFrame,那么索引和列标签都必须匹配。

返回:
DataFrame

布尔值的 DataFrame,显示 DataFrame 中的每个元素是否包含在 values 中。

另请参阅

DataFrame.eq

DataFrame 的相等性测试。

Series.isin

Series 上的等效方法。

Series.str.contains

测试 Series 或 Index 的字符串是否包含模式或正则表达式。

注意

__iter__ 被使用(而不是 __contains__)来迭代 values,以检查其是否包含 DataFrame 中的元素。

示例

>>> df = pd.DataFrame(
...     {"num_legs": [2, 4], "num_wings": [2, 0]}, index=["falcon", "dog"]
... )
>>> df
        num_legs  num_wings
falcon         2          2
dog            4          0

values 是一个列表时,检查 DataFrame 中的每个值是否存在于列表中(例如,哪些动物有 0 或 2 条腿或翅膀)。

>>> df.isin([0, 2])
        num_legs  num_wings
falcon      True       True
dog        False       True

要检查 values 是否在 DataFrame 中,请使用 ~ 运算符。

>>> ~df.isin([0, 2])
        num_legs  num_wings
falcon     False      False
dog         True      False

values 是一个 dict 时,我们可以为每列分别传递要检查的值。

>>> df.isin({"num_wings": [0, 3]})
        num_legs  num_wings
falcon     False      False
dog        False       True

values 是一个 Series 或 DataFrame 时,索引和列必须匹配。请注意,“falcon”(猎鹰)不匹配,因为其他选项的数量与它的腿数不同。

>>> other = pd.DataFrame(
...     {"num_legs": [8, 3], "num_wings": [0, 2]}, index=["spider", "falcon"]
... )
>>> df.isin(other)
        num_legs  num_wings
falcon     False       True
dog        False      False