📜  获取列等于值的行 pandas - Python (1)

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

获取列等于值的行 pandas - Python

Pandas是一个强大的数据处理库,它通过DataFrame提供了灵活的行列操作。在处理数据时,我们常常需要根据某列的值来选取一部分行数据。这时,Pandas提供了多种方法来实现这一目的,包括使用Boolean mask和query方法等。

1. 使用Boolean mask

在Pandas中,Boolean mask可以用来选择满足指定条件的行列数据。下面的代码演示了如何获得DataFrame中某一列等于指定值的所有行:

import pandas as pd

# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Mary', 'Steve'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'F', 'M']
}
df = pd.DataFrame(data)

# 使用Boolean mask选取满足条件的行
mask = df['gender'] == 'M'
male_df = df[mask]

print(male_df)

输出结果:

    name  age gender
0    Tom   28      M
1   Jack   34      M
3  Steve   42      M

代码解析:

  • 第1行:导入pandas库。我们将使用pandas.DataFrame创建DataFrame对象。
  • 第4~6行:定义字典类型变量data,并基于它创建DataFrame对象df。
  • 第9行:通过列名‘gender’和相应的条件获取Boolean mask。
  • 第10行:应用该mask并将结果赋值给male_df。
  • 第12行:打印选中的行数据。
2. 使用query方法

Pandas的DataFrame对象还提供了query()方法,可以使用类似于SQL的语法来选择合适的行列数据。下面的代码演示了如何使用query()方法获得某一列等于指定值的所有行:

import pandas as pd

# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Mary', 'Steve'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'F', 'M']
}
df = pd.DataFrame(data)

# 使用query方法选取满足条件的行
male_df = df.query('gender == "M"')

print(male_df)

输出结果:

    name  age gender
0    Tom   28      M
1   Jack   34      M
3  Steve   42      M

代码解析:

  • 第1行:导入pandas库。我们将使用pandas.DataFrame创建DataFrame对象。
  • 第4~6行:定义字典类型变量data,并基于它创建DataFrame对象df。
  • 第9行:使用query()方法,其中类似于SQL中where子句的条件为'gender == "M"'。
  • 第10行:应用查询结果并将其赋值给male_df。
  • 第12行:打印选中的行数据。

使用query()方法时需要注意以下内容:

  • 语法必须是类似于SQL的语法。
  • 查询条件必须使用双引号。
  • 如果查询中包含双引号,则应该使用单引号或三引号。

以上两种方法均可以实现获取列等于值的行,在实际使用中可以根据具体需求选择合适的方法,这样可以使代码更加清晰简洁。