如何使用 .loc 方法来根据两个条件选择数据

如何使用 .loc 方法来根据两个条件选择数据

参考:pandas dataframe loc two conditions

在数据分析和数据处理中,PandasPython 中最常用的库之一。它提供了一个名为 DataFrame 的数据结构,它是一个二维标签数据结构,可以存储不同类型的数据。DataFrame 提供了多种方法来访问和修改数据。其中一个非常有用的功能是 .loc[] 方法,它允许我们根据标签选择数据的子集。在本文中,我们将详细探讨如何使用 .loc[] 方法来根据两个条件选择数据。

1. 创建 DataFrame

在开始探讨 .loc[] 方法之前,我们首先需要创建一个 DataFrame。以下是一个简单的示例,创建一个包含人员信息的 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:

如何使用 .loc 方法来根据两个条件选择数据

2. 使用 .loc[] 选择数据

.loc[] 方法允许我们根据行标签和列标签选择数据。它的基本语法是 df.loc[行标签, 列标签]。如果我们想选择所有行或所有列,可以使用 : 代替行标签或列标签。

示例代码 1: 选择特定的行和列

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'] == 'New York', 'Name']
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

示例代码 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, ['Name', 'City']]
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

3. 使用两个条件进行选择

在实际应用中,我们经常需要根据多个条件来选择数据。.loc[] 方法可以通过使用逻辑运算符(如 &(和)、|(或))来实现多条件选择。

示例代码 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'), 'Name']
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

示例代码 4: 使用两个条件选择多列

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'), ['Name', 'Age']]
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

示例代码 5: 使用或条件

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'] > 40) | (df['City'] == 'New York'), 'Name']
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

4. 使用 .loc[] 进行复杂选择

.loc[] 方法的强大之处在于它可以处理非常复杂的选择条件。我们可以结合多个条件来进行选择,甚至可以使用函数来生成条件。

示例代码 6: 使用函数条件

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['Name'].apply(lambda x: 'e' in x), 'City']
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

示例代码 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[(df['Age'] > 25) & (df['City'].isin(['New York', 'Los Angeles'])), ['Name', 'City']]
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

示例代码 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)

result = df.loc[~(df['Age'] < 30), 'Name']
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

5. 修改数据使用 .loc[]

.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['Name'] == 'Alice', 'Age'] = 26
print(df)

Output:

如何使用 .loc 方法来根据两个条件选择数据

示例代码 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)

df.loc[df['Age'] > 40, ['City', 'Name']] = ['Seattle', 'John']
print(df)

Output:

如何使用 .loc 方法来根据两个条件选择数据

6. 使用 .loc[] 进行高级索引

除了基本的行和列选择外,.loc[] 方法还支持更高级的索引技术,如切片、布尔索引等。

示例代码 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[1:3, 'Name']
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

示例代码 12: 列切片

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, 'Name':'City']
print(result)

Output:

如何使用 .loc 方法来根据两个条件选择数据

示例代码 13: 布尔索引

print(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)

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

7. 总结

在本文中,我们详细探讨了如何使用 Pandas 的 .loc[] 方法根据两个条件选择 DataFrame 中的数据。我们通过多个示例展示了如何创建条件、选择数据、修改数据以及进行高级索引。掌握 .loc[] 方法是进行有效数据分析和数据处理的关键。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程