📜  Pandas DataFrame.query()(1)

📅  最后修改于: 2023-12-03 15:33:23.497000             🧑  作者: Mango

Pandas DataFrame.query()

Pandas DataFrame.query()是一个非常强大的方法,它允许使用布尔表达式来从DataFrame中筛选数据。该方法可以理解为将字符中的布尔表达式转换为DataFrame的筛选器。

语法
DataFrame.query(expr, inplace=False, **kwargs)
参数
  • expr: 字符串形式的Boolean表达式
  • inplace: 布尔值,默认为False。是否在原DataFrame中修改
示例
import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'], 
        'age': [25, 30, 35, 40], 
        'gender': ['F', 'M', 'M', 'M'], 
        'city': ['Paris', 'New York', 'Tokyo', 'London']}
df = pd.DataFrame(data)

result = df.query('age >= 30')
print(result)

输出:

       name  age gender      city
1       Bob   30      M  New York
2   Charlie   35      M     Tokyo
3     David   40      M    London

以上示例演示了如何使用DataFrame.query()方法筛选年龄大于等于30的数据。

布尔表达式

在DataFrame.query()方法中使用的布尔表达式也可以使用Python的运算符和常见函数,例如:

运算符

|操作符|说明| |:----:|:----:| |==|判断相等| |!=|判断不等| |<|小于| |<=|小于等于| |>|大于| |>=|大于等于| |and|与| |or|或| |not|非|

函数
  • in: 判断数据是否在列表或数组中
  • not in: 判断数据是否不在列表或数组中
  • between: 判断数据是否在一个范围内
  • is: 判断数据是否为NA/NaN
  • notnull: 判断数据是否不为NA/NaN
  • startswith: 判断数据是否以给定字符串开头
  • endswith: 判断数据是否以给定字符串结尾
  • contains: 判断数据是否包含给定字符串
  • regex: 判断数据是否匹配正则表达式

例如,以下代码展示了如何使用between函数和in操作符:

result = df.query('age.between(30, 35) and gender in ["M"]')

以上示例演示了如何使用between函数和in操作符筛选年龄在30到35之间,并且性别是男性的数据。

总结

本文介绍了Pandas DataFrame.query()方法的语法、参数、示例和布尔表达式。该方法可以有效地从数据中筛选出所需的数据,是在数据处理和分析中非常有用的工具。