根据条件选择pandas DataFrame中的行

  • Post category:Python

选择Pandas DataFrame中的行,可以使用条件语句进行筛选。Pandas提供了非常灵活的方法来对DataFrame进行筛选,使用逻辑运算符和函数,从而实现不同条件下的快速筛选和数据处理。

以下是根据条件选择Pandas DataFrame中的行的完整攻略,并附有实例说明:

1. 利用布尔索引(Boolean Indexing)选取行

在Pandas中,使用布尔索引来选取DataFrame的行非常方便,只需要将条件表达式写入方括号中即可。例如,我们有一个DataFrame,需要筛选其中Age列大于30岁的行,代码如下:

import pandas as pd

data = {'Name': ['John', 'Emily', 'Charlie', 'Alice'],
        'Age': [25, 31, 45, 28],
        'Country': ['USA', 'Canada', 'UK', 'Australia']}

df = pd.DataFrame(data)

# 利用布尔索引选取Age列大于30岁的行
df_age_gt_30 = df[df.Age > 30]

print(df_age_gt_30)

运行结果如下:

     Name  Age Country
1   Emily   31  Canada
2  Charlie   45      UK

2. 利用query()方法选取行

Pandas提供了query()方法,可以根据条件表达式来筛选DataFrame的行。使用该方法,需要将条件表达式写成字符串的形式,并传入query()方法中。对于包含字符串的表达式,需要使用单引号或双引号将其括起来。例如,我们有一个DataFrame,需要筛选其中Country列为’USA’或’Canada’的行,代码如下:

import pandas as pd

data = {'Name': ['John', 'Emily', 'Charlie', 'Alice'],
        'Age': [25, 31, 45, 28],
        'Country': ['USA', 'Canada', 'UK', 'Australia']}

df = pd.DataFrame(data)

# 利用query()方法选取Country列为'USA'或'Canada'的行
df_country = df.query("Country == 'USA' or Country == 'Canada'")

print(df_country)

运行结果如下:

    Name  Age Country
0   John   25     USA
1  Emily   31  Canada

3. 利用loc[]方法选取行

loc[]方法可以根据索引标签来选取DataFrame中的行。使用该方法时,需要传入索引标签或标签的列表。如果需要对某一列的值进行筛选或运算,可以在中括号内指定列名进行操作。例如,我们有一个DataFrame,需要筛选其中Age列大于30岁的行,代码如下:

import pandas as pd

data = {'Name': ['John', 'Emily', 'Charlie', 'Alice'],
        'Age': [25, 31, 45, 28],
        'Country': ['USA', 'Canada', 'UK', 'Australia']}

df = pd.DataFrame(data)

# 利用loc[]方法选取Age列大于30岁的行
df_age_gt_30 = df.loc[df.Age > 30]

print(df_age_gt_30)

运行结果如下:

     Name  Age Country
1   Emily   31  Canada
2  Charlie   45      UK

4. 利用iloc[]方法选取行

iloc[]方法可以根据整数位置来选取DataFrame中的行。使用该方法时,需要传入整数位置或位置的列表。如果需要对某一列的值进行筛选或运算,可以在中括号内指定列的位置进行操作。例如,我们有一个DataFrame,需要筛选其中第3行和第4行的Age列和Country列,代码如下:

import pandas as pd

data = {'Name': ['John', 'Emily', 'Charlie', 'Alice'],
        'Age': [25, 31, 45, 28],
        'Country': ['USA', 'Canada', 'UK', 'Australia']}

df = pd.DataFrame(data)

# 利用iloc[]方法选取第3行和第4行的Age列和Country列
df_iloc = df.iloc[2:4, [1, 2]]

print(df_iloc)

运行结果如下:

   Age    Country
2   45         UK
3   28  Australia

以上是根据条件选择Pandas DataFrame中的行的完整攻略,并附有实例说明。通过学习这些方法,能够快速、灵活地对DataFrame进行筛选和数据处理。