Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

参考:pandas dataframe loc with multiple conditions

在数据分析和数据处理中,Pandas 是 Python 中最受欢迎的库之一。Pandas 提供了 DataFrame 对象,这是一个强大的二维数据结构,类似于 Excel 表格。使用 DataFrame,我们可以轻松地读取、修改、筛选和处理数据。在本文中,我们将详细探讨如何使用 loc 方法结合多个条件来筛选 DataFrame 中的数据。

1. 基本使用

loc 方法是 Pandas 中用于选择数据的主要方法之一。它允许我们通过标签选择数据,也可以结合多个条件进行选择。在使用 loc 时,我们可以传递单个标签、标签列表、切片、布尔数组等。

示例代码 1: 创建 DataFrame

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

print(df)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

示例代码 2: 使用单个条件筛选

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.loc[df['Age'] > 30]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

示例代码 3: 使用多个条件筛选

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.loc[(df['Age'] > 30) & (df['City'] == 'Chicago')]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

2. 结合多个条件

当我们需要根据多个条件筛选数据时,可以使用逻辑运算符,如 & (和), | (或), ~ (非) 来组合条件。

示例代码 4: 使用 AND 条件

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.loc[(df['Age'] > 30) & (df['City'] == 'Houston')]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

示例代码 5: 使用 OR 条件

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.loc[(df['Age'] > 30) | (df['City'] == 'New York')]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

示例代码 6: 使用 NOT 条件

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.loc[~(df['City'] == 'Phoenix')]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

3. 使用切片与条件

我们不仅可以使用条件,还可以结合切片来选择数据。

示例代码 7: 结合切片和条件

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.loc[2:4, (df.columns == 'Name') | (df.columns == 'City')]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

4. 使用函数定义条件

有时候,我们的筛选条件可能比较复杂,可以使用函数来定义这些条件。

示例代码 8: 使用自定义函数

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

def custom_condition(x):
    return x['Age'] > 35 and x['City'].startswith('H')

result = df.loc[df.apply(custom_condition, axis=1)]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

5. 修改选中的数据

使用 loc 不仅可以选择数据,还可以修改选中的数据。

示例代码 9: 修改选中的数据

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

df.loc[df['Age'] > 40, 'City'] = 'San Francisco'
print(df)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

6. 复杂的条件组合

在实际应用中,我们可能需要根据多个复杂的条件来筛选数据。

示例代码 10: 复杂条件组合

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.loc[(df['Age'] > 25) & (df['City'].isin(['New York', 'Los Angeles'])) & (df['Name'].str.contains('pandasdataframe.com'))]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

示例代码 11: 更复杂的条件组合

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.loc[(df['Age'].between(30, 40)) & (df['City'].str.endswith('s'))]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

7. 使用 query 方法

除了 loc,Pandas 还提供了 query 方法,可以使用字符串形式的表达式来筛选数据,这在某些情况下可以使代码更简洁。

示例代码 12: 使用 query 方法

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.query('Age > 30 & City == "Chicago"')
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

8. 性能考虑

当处理大规模数据时,性能成为一个重要的考虑因素。使用 loc 与多条件筛选时,应尽可能优化条件表达式,避免不必要的计算。

示例代码 13: 性能优化

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

result = df.loc[(df['Age'] > 30) & (df['City'].str.contains('pandasdataframe.com'))]
print(result)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

9. 结合 groupby 使用

在使用 loc 进行数据筛选后,我们可能需要对筛选后的数据进行分组统计。

示例代码 14: 结合 groupby 使用

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

filtered = df.loc[df['Age'] > 30]
grouped = filtered.groupby('City').mean()
print(grouped)

10. 结合 merge 使用

筛选数据后,我们可能需要将筛选后的数据与其他数据进行合并。

示例代码 15: 结合 merge 使用

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}

df = pd.DataFrame(data)

filtered = df.loc[df['Age'] > 30]
other_data = pd.DataFrame({'City': ['New York', 'Chicago'], 'Population': [8000000, 2700000]})
merged = pd.merge(filtered, other_data, on='City')
print(merged)

Output:

Pandas如何使用loc方法结合多个条件来筛选 DataFrame 中的数据

通过上述示例,我们可以看到 loc 方法在结合多个条件进行数据筛选时的强大功能。在实际应用中,根据数据的具体情况和需求,合理使用 loc 可以帮助我们高效地处理数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程