根据索引过滤 Pandas DataFrame
NumPy 提供高性能数据操作和分析功能,是 Python 包 Pandas 的基础。它引入了 Series 和 DataFrame 数据结构。任何类型的数据都可以存储在一个系列中,这是一个一维标记数组。它相当于数据库表或电子表格中的列。Series 对象带有标签,这意味着每个成员都有一个关联的索引,使数据访问和操作变得快速而简单。
与电子表格或 SQL 表类似,数据框是由行和列组成的二维表格数据结构。它是系列对象的集合,并为数据处理、过滤、分组、连接和许多其他操作提供了强大的方法。通过从各种文件格式(例如 CSV 或 Excel)加载数据,您可以轻松地使用 Pandas 执行数据清理、探索和分析。
Filter() 提供了一种通过索引过滤数据框的有用方法,允许根据提供的索引中的相关标签对行和列进行特定的子集处理。过滤后,将通过 filter() 生成包含过滤结果的新 DataFrame。
语法
df.filter(items=None, like=None, regex=None, axis=None)
Items:此函数允许包含所述标签的列表类对象作为参数输入。因此,无论标签是什么,请求时都只会返回具有匹配名称的行和列。
like(可选):使用此参数,您可以根据字符串值过滤索引标签或列。结果将仅包含名称包含所提供字符串的列或行。
regex(可选):您可以使用正则表达式模式通过 regex(可选)参数选择列或索引标签。根据指定的正则表达式,它会过滤列或行。
axis(可选):可选参数 axis 确定是否过滤行(axis = 0)或列(axis = 1)。由于它通常设置为 None,因此过滤是在列上进行的。
示例 1
一个示例,演示如何使用 pandas 中提供的 iloc() 函数根据数值索引过滤数据框
import pandas as pd # 创建示例数据框 data = {'A': [1, 2, 3, 4, 5], 'B': [6, 7, 8, 9, 10], 'C': [11, 12, 13, 14, 15]} df = pd.DataFrame(data) # 根据数值索引过滤行 filtered_df = df.iloc[[1, 3]] print(filtered_df)
输出
A B C 1 2 7 12 3 4 9 14
为了确保根据数值索引 [1, 3] 有效过滤行,我们部署了过滤器函数。我们将在 df DataFrame 的三个相关列上使用它:即"A"、"B"和"C"。因此,过滤后的 DataFrame 已过滤_df 仅包含索引为 1 和 3 的行,但保留所有其他列。
示例 2
一个演示基于非数字值过滤数据框的示例
import pandas as pd # 创建示例 DataFrame data = {'A': [1, 2, 3, 4, 5], 'B': [6, 7, 8, 9, 10], 'C': [11, 12, 13, 14, 15]} df = pd.DataFrame(data) # 创建索引标签转换的映射字典 index_mapping = {1: 'two', 3: 'four'} # 根据数值索引过滤行并更新索引标签 filtered_df = df.iloc[[1, 3]].rename(index=index_mapping) print(filtered_df)
输出
A B C two 2 7 12 four 4 9 14
这里,我们使用 filter() 方法根据非数字值索引 [two, four] 过滤行。过滤后的 DataFrame 保留所有列,结果仅包含索引为"two"和"four"的行。
示例 3
这里,我们说明如何过滤 DataFrame 并提取包含特定字符的索引。
import pandas as pd # 创建示例 DataFrame sample_data = {'A': [1, 2, 3, 4, 5], 'B': [6, 7, 8, 9, 10], 'C': [11, 12, 13, 14, 15]} df = pd.DataFrame(sample_data, index=['apple', 'banana', 'orange', 'grape', 'kiwi']) # 根据包含特定字符的索引过滤行 filtered_df = df[df.index.str.contains('a')] print(filtered_df)
输出
A B C apple 1 6 11 banana 2 7 12 orange 3 8 13 grape 4 9 14
列"A"、"B"和"C"是 DataFrame 的列,其索引为"Apple"、"Banana"、"Orange"、"Grape"和"Kiwi"。要确定每个索引是否包含字母"a",我们使用 contains() 方法。然后使用此布尔标准过滤数据框的行。
结论
在进行数据分析和操作活动时,根据索引值过滤数据框至关重要。在处理大量数据集时,它为我们提供了灵活性和效率,可以提取相关的数据子集以进行额外的分析或处理。