📜  Python|熊猫索引.isin()(1)

📅  最后修改于: 2023-12-03 14:46:31.529000             🧑  作者: Mango

Python | 熊猫索引.isin()

简介

在 Pandas 库中,我们可以使用isin()函数来检查数据中的值是否在给定的值集合中。该函数返回一个布尔值的数组,其长度等于数据中的值数。在本文中,我们将通过使用isin()函数来了解如何为 Pandas 索引创建一个布尔掩码,并以此为基础完成数据过滤和选择。

使用方法
创建布尔掩码

以下示例演示了如何使用isin()函数为 Pandas 索引创建一个布尔掩码。在此示例中,我们使用了一个名为data的简单数据框。

import pandas as pd

data = pd.DataFrame({'age': [25, 30, 35, 20, 45],
                     'gender': ['M', 'F', 'M', 'M', 'F'],
                     'city': ['London', 'Paris', 'New York', 'Tokyo', 'Sydney']})

mask = data['city'].isin(['Paris', 'Tokyo', 'Sydney'])

print(mask)

输出:

0    False
1     True
2     True
3     True
4     True
Name: city, dtype: bool

可以看到,isin()函数返回了一个city列的布尔掩码。在此掩码中,与给定值'Paris''Tokyo''Sydney'匹配的值标记为True,而其他值则标记为False

我们可以将此布尔掩码放入原始数据框中,以仅选择特定行。为此,我们使用loc[]函数,并将嵌入的掩码用作索引器。

filtered_data = data.loc[mask]

print(filtered_data)

输出:

   age gender     city
1   30      F    Paris
2   35      M  New York
3   20      M    Tokyo
4   45      F   Sydney
在 DataFrame 中选择列的子集

除了使用布尔掩码进行行选择之外,我们还可以使用isin()函数选择 DataFrame 中的特定列的子集。在此示例中,我们有一个包含多个列的数据框,并且只想选择country列的子集。

import pandas as pd

data = pd.DataFrame({'age': [25, 30, 35, 20, 45],
                     'gender': ['M', 'F', 'M', 'M', 'F'],
                     'country': ['UK', 'France', 'USA', 'Japan', 'Australia'],
                     'continent': ['Europe', 'Europe', 'North America', 'Asia', 'Australia']})

subset = data[data['country'].isin(['France', 'Japan'])][['age', 'continent']]

print(subset)

输出:

   age continent
1   30    Europe
3   20      Asia

在此示例中,我们首先创建一个包含使用isin()函数它选择行的新增列的数据框。在这种情况下,我们希望选择列子集,因此将适当的列名称嵌入嵌套索引器中:

subset = data[data['country'].isin(['France', 'Japan'])][['age', 'continent']]

此操作返回一个嵌套索引器,该索引器选择由isin()函数选择的行,并仅选择由内层中括号指示的列子集。

结论

isin()函数是 Pandas 库中一种方便的工具,它允许我们使用给定的值集合来创建布尔掩码,以此为基础选择和过滤 Pandas 数据集。无论是构建掩码以选择数据框的子集,还是为 DataFrame 中的特定列选择子集,都可以使用此工具。