Data Analysis

Pandas DataFrame 筛选技巧详解

Spread the love

Pandas是一个强大的Python库,用于数据操作和分析。根据列值过滤DataFrame行是数据处理中的一个基本任务。本文探讨了有效过滤Pandas DataFrame的各种技术,涵盖了从简单到复杂的场景。

目录

基本过滤:单列,单条件

最简单的过滤形式包括选择特定列匹配特定值的行。这是使用布尔索引实现的。


import pandas as pd

# 示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 22, 28],
        'City': ['New York', 'London', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)

# 选择City为'London'的行
london_residents = df[df['City'] == 'London']
print(london_residents)

这段代码创建一个布尔掩码(df['City'] == 'London'),在’City’列为’London’的地方为True,否则为False。然后使用此掩码来索引DataFrame,仅选择掩码为True的行。

否定:选择不匹配条件的行

要选择列包含特定值的行,请使用!=运算符否定布尔条件。


# 选择City不为'London'的行
not_london_residents = df[df['City'] != 'London']
print(not_london_residents)

数值比较:大于、小于等

对于数值列,使用比较运算符(><>=<=)根据值范围进行过滤。


# 选择Age大于25的行
older_than_25 = df[df['Age'] > 25]
print(older_than_25)

# 选择Age小于或等于25的行
younger_than_or_equal_to_25 = df[df['Age'] <= 25]
print(younger_than_or_equal_to_25)

组合条件:AND和OR运算

通过使用逻辑运算符&(AND)和|(OR)组合布尔条件来根据多个列值进行过滤。将每个条件括在括号中。


# 选择City为'London'且Age大于25的行
london_and_older = df[(df['City'] == 'London') & (df['Age'] > 25)]
print(london_and_older)

# 选择City为'London'或Age大于25的行
london_or_older = df[(df['City'] == 'London') | (df['Age'] > 25)]
print(london_or_older)

高级过滤:多列和复杂逻辑

对于复杂场景,query()方法提供了更好的可读性。


# 使用query()提高可读性
complex_filter = df.query('(City == "London" and Age > 25) or (Age < 23)')
print(complex_filter)

使用isin()进行高效过滤

isin()方法提供了一种简洁的方法来检查值是否包含在列表中。


cities_to_include = ['London', 'Paris']
filtered_df = df[df['City'].isin(cities_to_include)]
print(filtered_df)

本文演示了在Pandas中过滤DataFrame的各种技术。选择合适的方法取决于过滤条件的复杂性。请记住在逻辑运算符中正确使用括号以确保结果准确。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注