准备工作
在开始之前,我们需要先安装 Pandas 包。你可以使用以下命令进行安装:
pip install pandas
安装好所需的包后,让我们正式进入主题。

Pandas DataFrame 复杂过滤
DataFrame 是 Pandas 中用于存储和操作数据的对象。它非常强大,因为我们可以利用条件、逻辑运算符和 Pandas 的函数对数据进行过滤。
让我们先创建一个简单的 DataFrame 对象:
import pandas as pd
df = pd.DataFrame({
'Name': ['Alice', 'Leah', 'Jessica', 'Kenny', 'Brad'],
'Age': [50, 27, 22, 30, 40],
'Salary': [100000, 154000, 120000, 78000, 88000],
'Occupation': ['Doctor', 'Soldier', 'Doctor', 'Accountant', 'Florist']
})
接下来,我们将学习如何对这些示例数据进行过滤。首先,可以根据特定条件进行数据筛选:
df[df['Age'] > 30]
输出:
Name Age Salary Occupation
0 Alice 50 100000 Doctor
4 Brad 40 88000 Florist
我们也可以结合 And(&)运算符来组合多个条件:
df[(df['Age'] > 25) & (df['Salary'] < 100000)]
输出:
Name Age Salary Occupation
3 Kenny 30 78000 Accountant
4 Brad 40 88000 Florist
同样地,也可以用 Or(|)运算符组合条件:
df[(df['Salary'] < 100000) | (df['Occupation'] == 'Soldier')]
输出:
Name Age Salary Occupation
1 Leah 27 154000 Soldier
3 Kenny 30 78000 Accountant
4 Brad 40 88000 Florist
此外,我们还可以利用字符串函数进行数据过滤。例如,筛选出某列包含特定值的数据:
df[df['Occupation'].str.contains('Sol')]
输出:
Name Age Salary Occupation
1 Leah 27 154000 Soldier
如果你需要按照特定字符串值进行过滤,可以使用以下方法:
df[df['Occupation'].isin(['Doctor', 'Florist'])]
输出:
Name Age Salary Occupation
0 Alice 50 100000 Doctor
2 Jessica 22 120000 Doctor
4 Brad 40 88000 Florist
还可以通过 lambda 函数对数据进行过滤:
df[df['Name'].apply(lambda x: len(x) > 5)]
输出:
Name Age Salary Occupation
2 Jessica 22 120000 Doctor
如果你想简化操作,可以使用 query 方法来过滤数据:
df.query('Age < 30 and Salary > 100000')
输出:
Name Age Salary Occupation
1 Leah 27 154000 Soldier
2 Jessica 22 120000 Doctor
最后,我们可以将前面学到的各种过滤条件进行组合:
df[(df['Age'] > 30) & (
(df['Salary'] > 60000) |
(df['Occupation'].str.contains('Doc')))]
输出:
Name Age Salary Occupation
0 Alice 50 100000 Doctor
4 Brad 40 88000 Florist
掌握这些过滤函数,将大大提升你的数据分析能力。