Pandas 根据索引筛选DataFrame

Pandas 根据索引筛选DataFrame

NumPy是Python包Pandas的基础,提供了高性能的数据处理和分析功能。它引入了Series和DataFrame数据结构。任何类型的数据都可以存储在一个Series中,它是一个一维带标签的数组。它类似于数据库表或电子表格中的一列。Series对象是带标签的,这意味着每个成员都有一个相关联的索引,使得数据访问和操作快速简单。

与电子表格或SQL表类似,数据框是一个由行和列组成的二维表状数据结构。它是一组Series对象,提供了强大的方法进行数据处理、过滤、分组、连接和许多其他操作。通过从各种文件格式(如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

# Create a sample DataFrame
data = {'A': [1, 2, 3, 4, 5],
    'B': [6, 7, 8, 9, 10],
    'C': [11, 12, 13, 14, 15]}
df = pd.DataFrame(data)

# Filter rows based on numeric value indexes
filtered_df = df.iloc[[1, 3]]

print(filtered_df)

输出

A  B   C
1  2  7  12
3  4  9  14

为了根据数值索引[1, 3]有效过滤行,我们使用了filter函数。我们将在df DataFrame的三个相关列上使用它,即’A’,’B’和’C’。过滤后的DataFrame filtered_df只包含索引为1和3的行,但所有其他列都保留。

示例2

一个示例,演示基于非数值的值来过滤数据框。

import pandas as pd

# Create a sample DataFrame
data = {'A': [1, 2, 3, 4, 5],
    'B': [6, 7, 8, 9, 10],
    'C': [11, 12, 13, 14, 15]}
df = pd.DataFrame(data)

# Create a mapping dictionary for index label conversion
index_mapping = {1: 'two', 3: 'four'}

# Filter rows based on numeric value indexes and update index labels
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]过滤行。过滤后的数据框保留所有列,结果只包含索引为”two”和”four”的行。

示例3

在这个示例中,我们演示了如何根据特定字符过滤数据框并提取包含该字符的索引。

import pandas as pd

# Create a sample 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'])

# Filter rows based on indexes containing a specific character
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的列,它具有索引”苹果”,”香蕉”,”橙子”,”葡萄”和”奇异果”。为了确定每个索引是否包含字母”a”,我们使用contains()方法。然后使用这个布尔条件来过滤数据框的行。

结论

在进行数据分析和操作活动时,根据索引值筛选数据框是非常重要的。在处理庞大的数据集时,它可以灵活高效地提取相关的数据子集,用于进一步的分析或处理。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程