在Pandas中使用查询方法进行复杂条件的选择

  • Post category:Python

在Pandas中,可以使用query()方法进行复杂条件的选择。查询语句的写法类似于SQL语句,但是需要注意的是,列名需要使用反引号(`)括起来,而字符串条件需要使用双引号(”)或者单引号(’)括起来。下面我们以一个实例来说明如何使用query()方法进行复杂条件的选择。

首先,我们创建一个示例DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({
        'A': np.random.randint(1, 10, 5),
        'B': np.random.randint(1, 10, 5),
        'C': np.random.choice(['junior', 'senior'], 5),
        'D': np.random.choice(['M', 'F'], 5)
    })

print(df)

输出如下:

   A  B       C  D
0  7  8  junior  F
1  3  1  junior  F
2  9  2  senior  F
3  8  2  senior  M
4  7  8  senior  M

假设我们需要筛选出A列大于等于7且C列为senior的行,可以使用query()方法进行筛选:

result = df.query("`A` >= 7 and `C` == 'senior'")

print(result)

输出:

   A  B       C  D
2  9  2  senior  F
4  7  8  senior  M

除了and,还可以使用or和not等逻辑运算符,以及in和not in等运算符,来进行复杂条件的筛选。比如,我们想要筛选出在D列中为M或者C列为junior的行:

result = df.query("`D` == 'M' or `C` == 'junior'")

print(result)

输出:

   A  B       C  D
0  7  8  junior  F
1  3  1  junior  F
3  8  2  senior  M
4  7  8  senior  M

这只是query()方法的一个简单示例,实际使用中还可以根据需要加入更多的条件和运算符,让查询更加灵活和精准。