📅  最后修改于: 2023-12-03 14:46:31.529000             🧑  作者: Mango
在 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
除了使用布尔掩码进行行选择之外,我们还可以使用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 中的特定列选择子集,都可以使用此工具。