用多个条件过滤Pandas数据框架

  • Post category:Python

当我们处理Pandas数据框架时,有时需要根据多个条件对数据进行过滤。以下是对于如何用多个条件过滤Pandas数据框架的完整攻略:

使用 &| 符号

Pandas数据框架中,可以使用 &| 符号来对多个条件进行逻辑运算。其中,& 符号表示“与”,| 符号表示“或”。

假设我们有一个名为df的数据框架,其中包含“姓名”、“年龄”、“性别”、“城市”等几列数据。要筛选出年龄为25岁且来自北京市的女性,可以这样写:

df[(df['年龄'] == 25) & (df['城市'] == '北京') & (df['性别'] == '女')]

如果需要筛选所有来自北京和上海的数据,则可以这样写:

df[(df['城市'] == '北京') | (df['城市'] == '上海')]

使用 query() 方法

除了使用符号进行逻辑运算外,Pandas数据框架还提供了一个 query() 方法,可以更方便地对多个条件进行筛选。使用方法如下:

df.query('性别 == "女" and 城市 == "北京" and 年龄 == 25')

上述语句与第一个示例中使用符号的语句效果相同。而如果要筛选所有来自北京和上海的数据,则可以这样写:

df.query('城市 == "北京" or 城市 == "上海"')

在使用 query() 方法时,注意要用双引号包裹查询条件中的字符串,并按照Python语法编写查询条件。

示例

以下是一个示例:

import pandas as pd

data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七'],
        '年龄': [23, 25, 22, 24, 27],
        '性别': ['男', '女', '男', '女', '女'],
        '城市': ['北京', '上海', '北京', '上海', '北京']}

df = pd.DataFrame(data)

# 筛选出北京市25岁的女性
result1 = df[(df['年龄'] == 25) & (df['城市'] == '北京') & (df['性别'] == '女')]

# 筛选出所有居住在北京或上海的人员信息
result2 = df.query('城市 == "北京" or 城市 == "上海"')

print(result1)
print(result2)

输出结果为:

  姓名  年龄 性别  城市
1  李四  25  女  上海
4  钱七  27  女  北京
  姓名  年龄 性别  城市
0  张三  23  男  北京
1  李四  25  女  上海
2  王五  22  男  北京
3  赵六  24  女  上海
4  钱七  27  女  北京

以上就是使用多个条件过滤Pandas数据框架的完整攻略。希望可以帮助到你。