如何使用 Pandas 来过滤 DataFrame 中的数据

如何使用 Pandas 来过滤 DataFrame 中的数据

参考:pandas filter df

在数据分析中,筛选和过滤数据是一个非常常见且重要的操作。Pandas 是 Python 中一个强大的数据处理库,它提供了多种方法来筛选 DataFrame 中的数据。本文将详细介绍如何使用 Pandas 来过滤 DataFrame 中的数据,并提供多个示例代码以帮助理解和应用。

1. 使用条件表达式过滤

在 Pandas 中,你可以使用条件表达式来过滤数据。这是最直接的过滤方式,可以根据一个或多个条件来筛选数据。

示例代码 1:单条件过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 过滤出 Website 列为 'pandasdataframe.com' 的行
filtered_df = df[df['Website'] == 'pandasdataframe.com']
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

示例代码 2:多条件过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 过滤出 Website 列为 'pandasdataframe.com' 并且 Age 大于 30 的行
filtered_df = df[(df['Website'] == 'pandasdataframe.com') & (df['Age'] > 30)]
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

2. 使用 query() 方法过滤

Pandas 的 query() 方法提供了一种更为简洁的方式来过滤 DataFrame。你可以在 query() 方法中直接使用字符串表达式来指定过滤条件。

示例代码 3:使用 query 过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 query 方法过滤 Website 列为 'pandasdataframe.com'
filtered_df = df.query("Website == 'pandasdataframe.com'")
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

3. 使用 isin() 方法过滤

当你需要根据列的值是否存在于某个列表中来过滤数据时,isin() 方法非常有用。

示例代码 4:使用 isin 过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 过滤出 Website 列的值在指定列表中的行
websites_to_filter = ['pandasdataframe.com', 'example.com']
filtered_df = df[df['Website'].isin(websites_to_filter)]
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

4. 使用 filter() 方法过滤

Pandas 的 filter() 方法可以用来按照指定的轴和条件来过滤数据。这个方法主要用于选择列,而不是过滤行。

示例代码 5:使用 filter 过滤列

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 filter 方法选择包含 'Name' 和 'Website' 的列
filtered_df = df.filter(items=['Name', 'Website'])
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

5. 结合使用 lociloc 过滤

lociloc 是 Pandas 中用于基于标签或整数位置进行数据选择的方法。它们也可以用于数据过滤。

示例代码 6:使用 loc 过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 loc 方法过滤出 Age 大于 30 的行
filtered_df = df.loc[df['Age'] > 30]
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

示例代码 7:使用 iloc 过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 iloc 方法选择前三行
filtered_df = df.iloc[:3]
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

6. 使用布尔索引过滤

布尔索引是 Pandas 中一种非常灵活的数据过滤方式。你可以创建一个布尔序列来指定哪些行应该被选中。

示例代码 8:使用布尔索引过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 创建一个布尔序列
condition = (df['Website'] == 'pandasdataframe.com')

# 使用布尔索引过滤数据
filtered_df = df[condition]
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

7. 使用 drop() 方法过滤

有时候,过滤数据不仅仅是选择符合条件的行,也可能涉及到删除某些不需要的行或列。drop() 方法可以用来删除 DataFrame 中的指定行或列。

示例代码 9:使用 drop 过滤行

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 删除第一行
filtered_df = df.drop(0)
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

示例代码 10:使用 drop 过滤列

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 删除 'Age' 列
filtered_df = df.drop('Age', axis=1)
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

示例代码 11:使用 notnull() 方法过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, None, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 过滤出 'Age' 列非空的行
filtered_df = df[df['Age'].notnull()]
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

示例代码 12:使用 str.contains() 方法过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 过滤出 'Website' 列包含 'pandasdataframe.com' 的行
filtered_df = df[df['Website'].str.contains('pandasdataframe.com')]
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

示例代码 13:使用 apply() 方法过滤

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 apply 方法过滤出 'Age' 列大于 30 的行
filtered_df = df[df['Age'].apply(lambda x: x > 30)]
print(filtered_df)

Output:

如何使用 Pandas 来过滤 DataFrame 中的数据

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程