一、使用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”字符串。否則輸出篩選後的數據。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/250972.html