如何使用 .loc 方法来根据两个条件选择数据
参考:pandas dataframe loc two conditions
在数据分析和数据处理中,Pandas 是 Python 中最常用的库之一。它提供了一个名为 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:
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:
示例代码 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:
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:
示例代码 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:
示例代码 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:
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:
示例代码 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:
示例代码 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:
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:
示例代码 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:
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:
示例代码 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:
示例代码 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[]
方法是进行有效数据分析和数据处理的关键。