Pandas基于数据帧中的多个列值选择行
在本文中,我们将介绍如何使用Pandas在数据帧中选择行。特别地,我们将关注如何选择基于多个列的特定条件的行。我们将讨论以下主题:
- 如何基于单个列值选择行
- 如何结合多个条件选择行
- 如何结合多个列值和多个条件选择行
我们首先需要导入Pandas库和创建一个数据帧来进行操作。
import pandas as pd
# 创建数据帧
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
'Age': [25, 32, 47, 32, 25],
'City': ['New York', 'Los Angeles', 'Chicago', 'Boston', 'New York'],
'Weight': [55, 67, 73, 82, 68],
'Gender': ['Female', 'Male', 'Male', 'Male', 'Female']
})
接下来,我们将使用这个数据集来进行不同的选择。
阅读更多:Pandas 教程
如何基于单个列值选择行
我们可以使用“”运算符来选择数据框中一个特定列中的值。例如,我们将选择City列中值为New York的所有行。
# 选择City列中值为“New York”的所有行
city_filter = df['City'] == 'New York'
ny_df = df[city_filter]
print(ny_df)
输出结果为:
Name Age City Weight Gender
0 Alice 25 New York 55 Female
4 Ella 25 New York 68 Female
如何结合多个条件选择行
我们可以使用“&”和“|”运算符将多个条件结合起来。
例如,我们将选择City列值为New York和Gender列值为Female的所有行。
# 选择City列值为“New York”并且Gender列值为“Female”的所有行
ny_female_filter = (df['City'] == 'New York') & (df['Gender'] == 'Female')
ny_female_df = df[ny_female_filter]
print(ny_female_df)
输出结果为:
Name Age City Weight Gender
0 Alice 25 New York 55 Female
4 Ella 25 New York 68 Female
类似地,我们可以选择City列值为New York或Gender列值为Female的所有行。
# 选择City列值为“New York”或Gender列值为“Female”的所有行
ny_or_female_filter = (df['City'] == 'New York') | (df['Gender'] == 'Female')
ny_or_female_df = df[ny_or_female_filter]
print(ny_or_female_df)
输出结果为:
Name Age City Weight Gender
0 Alice 25 New York 55 Female
1 Bob 32 Los Angeles 67 Male
2 Charlie 47 Chicago 73 Male
3 David 32 Boston 82 Male
4 Ella 25 New York 68 Female
如何结合多个列值和多个条件选择行
我们可以使用DataFrame.isin()方法来选择多个列的多个条件下的行。例如,我们将选择City列的New York值和Gender列的Female和Male值的所有行。
# 选择City列的“New York”值和Gender列的“Female”和“Male”值的所有行
value_list = ['New York', 'Female', 'Male']
value_filter = df.isin(value_list).any(1)
multiple_filter_df = df[value_filter]
print(multiple_filter_df)
输出结果为:
Name Age City Weight Gender
0 Alice 25.0 New York 55.0 Female
1 Bob 32.0 NaN 67.0 Male
2 Charlie 47.0 NaN 73.0 Male
3 David 32.0 NaN 82.0 Male
4 Ella 25.0 New York 68.0 Female