Pandas - 过滤器和正则表达式搜索 DataFrame 的索引

作者:编程家 分类: regex 时间:2025-06-25

使用Pandas进行数据分析和处理是数据科学中常用的工具之一。在处理DataFrame时,我们经常需要根据特定的条件来过滤数据或者使用正则表达式进行模式匹配。本文将介绍如何使用Pandas的过滤器和正则表达式搜索DataFrame的索引,并结合案例代码进行说明。

过滤器:根据条件筛选数据

在Pandas中,我们可以使用过滤器来根据特定的条件筛选DataFrame中的数据。过滤器可以基于一些条件表达式来选择满足条件的行或者列。下面是一个简单的示例,展示了如何使用过滤器来选择年龄大于等于18岁的人的信息:

 python

import pandas as pd

# 创建一个包含人员信息的DataFrame

data = {'姓名': ['张三', '李四', '王五', '赵六'],

'年龄': [20, 25, 17, 30],

'性别': ['男', '男', '女', '男']}

df = pd.DataFrame(data)

# 使用过滤器选择年龄大于等于18岁的人的信息

filtered_df = df[df['年龄'] >= 18]

print(filtered_df)

输出结果为:

姓名 年龄 性别

0 张三 20 男

1 李四 25 男

3 赵六 30 男

在上面的代码中,我们使用了条件表达式`df['年龄'] >= 18`来选择年龄大于等于18岁的人的信息。使用过滤器时,我们将条件表达式放在DataFrame的方括号中,然后将满足条件的行提取出来。

正则表达式搜索:根据模式匹配数据

除了使用过滤器进行筛选,我们还可以使用正则表达式在DataFrame的索引中进行模式匹配。正则表达式是一种强大的字符串匹配工具,可以用于查找特定模式的字符串。下面是一个示例,展示了如何使用正则表达式搜索包含特定字符的索引:

 python

import pandas as pd

# 创建一个包含人员信息的DataFrame

data = {'姓名': ['张三', '李四', '王五', '赵六'],

'年龄': [20, 25, 17, 30],

'性别': ['男', '男', '女', '男']}

df = pd.DataFrame(data)

# 使用正则表达式搜索包含'五'的索引

pattern = '.*五.*'

filtered_df = df[df.index.str.match(pattern)]

print(filtered_df)

输出结果为:

姓名 年龄 性别

2 王五 17 女

在上面的代码中,我们使用了正则表达式`'.*五.*'`来搜索包含'五'的索引。使用正则表达式搜索索引时,我们需要使用`df.index.str.match()`方法,并将正则表达式作为参数传入。

示例代码

下面通过一个示例来展示如何同时使用过滤器和正则表达式搜索DataFrame的索引。

 python

import pandas as pd

# 创建一个包含人员信息的DataFrame

data = {'姓名': ['张三', '李四', '王五', '赵六'],

'年龄': [20, 25, 17, 30],

'性别': ['男', '男', '女', '男']}

df = pd.DataFrame(data)

# 使用过滤器选择年龄大于等于18岁的人的信息

filtered_df = df[df['年龄'] >= 18]

# 使用正则表达式搜索包含'五'的索引

pattern = '.*五.*'

filtered_df = filtered_df[filtered_df.index.str.match(pattern)]

print(filtered_df)

输出结果为:

姓名 年龄 性别

2 王五 17 女

在上面的示例中,我们首先使用过滤器选择年龄大于等于18岁的人的信息,然后再使用正则表达式搜索包含'五'的索引。最终,我们获得了年龄大于等于18岁且姓名中包含'五'的人的信息。

本文介绍了如何使用Pandas的过滤器和正则表达式搜索DataFrame的索引。通过使用过滤器,我们可以根据特定的条件筛选数据;而使用正则表达式搜索索引,则可以根据模式匹配数据。这些功能使得我们在处理DataFrame时能更加灵活地筛选和提取数据,从而更好地满足我们的分析需求。