一、使用isin()函数的方法
Pandas是Python中用于数据处理和分析的一个库。其中,isin()函数是一种强大而方便的方法,可以在数据框中快速筛选出包含特定值的行。下面是使用isin()函数的示例代码:
import pandas as pd
data = {
'Name': ['John', 'Emily', 'Kate', 'James', 'Peter'],
'Age': [25, 30, 18, 35, 27],
'City': ['NYC', 'LA', 'CHI', 'LA', 'MI'],
}
df = pd.DataFrame(data)
selected_cities = ['CHI', 'MI']
filtered_data = df[df['City'].isin(selected_cities)]
print(filtered_data)
在上面的示例中,我们使用了isin()函数来筛选数据框df中位于selected_cities列表中的城市。我们在数据框中创建了一个名为selected_cities的新列表,并将其中的值设置为我们要筛选的城市列表。然后,我们对数据框中的City列使用isin()函数。
需要注意的是,isin()函数响应的是一个布尔向量,因此我们必须将这个向量传递给df[]运算符,以便根据这个向量过滤数据框中的行。最后我们将筛选后的数据打印出来。
二、多条件筛选数据
isin()函数还可以与其他条件一起使用,以进行更高级别的筛选。例如,在上一个示例中,我们只选择了两个城市。但是如果数据框有很多列,我们可能需要同时满足多个条件才能对数据进行筛选。以下是示例代码:
import pandas as pd
data = {
'Name': ['John', 'Emily', 'Kate', 'James', 'Peter'],
'Age': [25, 30, 18, 35, 27],
'City': ['NYC', 'LA', 'CHI', 'LA', 'MI'],
'Salary': [80000, 120000, 45000, 150000, 90000]
}
df = pd.DataFrame(data)
selected_cities = ['CHI', 'MI']
min_salary = 100000
filtered_data = df[(df['City'].isin(selected_cities)) & (df['Salary'] > min_salary)]
print(filtered_data)
这里,我们将数据框扩展为包括每个人的薪水。我们设置了一个名为min_salary的变量,以便在使用isin()函数进行筛选之前先筛选出具有所需最低薪水的人。我们使用了逻辑运算符&,将两个条件结合在一起,仅保留满足以下条件的行:City列包含selected_cities列表中的任意一个城市,且Salary列中的值大于min_salary。
三、如何处理筛选不到数据的情况
在某些情况下,筛选后的数据框可能为空,因为我们指定的条件与数据框中的任何行都不匹配。在这种情况下,我们可以使用empty属性检查筛选后的数据框是否为空,从而避免出现错误。
以下是示例代码:
import pandas as pd
data = {
'Name': ['John', 'Emily', 'Kate', 'James', 'Peter'],
'Age': [25, 30, 18, 35, 27],
'City': ['NYC', 'LA', 'CHI', 'LA', 'MI'],
'Salary': [80000, 120000, 45000, 150000, 90000]
}
df = pd.DataFrame(data)
selected_cities = ['DC', 'Boston']
min_salary = 50000
filtered_data = df[(df['City'].isin(selected_cities)) & (df['Salary'] > min_salary)]
if filtered_data.empty:
print('No data meets the selected criteria')
else:
print(filtered_data)
我们设置了selected_cities变量和min_salary变量,并将它们与数据框中的数据进行比较。在上面的示例中,我们设置的城市和薪水条件使筛选后的数据框为空,因此我们使用empty属性输出“No data meets the selected criteria”字符串。否则输出筛选后的数据。