如何使用pandas对DataFrame进行筛选操作
在数据分析和处理过程中,数据筛选是一个非常常见且重要的操作。pandas是Python中最流行的数据处理库之一,它提供了强大的数据筛选功能。本文将详细介绍如何使用pandas对DataFrame进行筛选操作,并通过多个示例代码来展示具体的实现方法。
1. 引入pandas库
在开始之前,我们需要引入pandas库。可以通过以下代码进行引入:
import pandas as pd
2. 创建示例DataFrame
在进行数据筛选操作之前,我们需要创建一个示例DataFrame。以下是一个简单的示例DataFrame:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 60000, 90000, 85000]
}
df = pd.DataFrame(data)
print(df)
Output:
3. 基本筛选操作
3.1 按列值筛选
我们可以根据某一列的值来筛选DataFrame。例如,筛选出年龄大于25的行:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 60000, 90000, 85000]
}
df = pd.DataFrame(data)
filtered_df = df[df['Age'] > 25]
print(filtered_df)
Output:
3.2 按多个条件筛选
我们可以使用多个条件来筛选DataFrame。例如,筛选出年龄大于25且工资大于80000的行:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 60000, 90000, 85000]
}
df = pd.DataFrame(data)
filtered_df = df[(df['Age'] > 25) & (df['Salary'] > 80000)]
print(filtered_df)
Output:
3.3 使用isin()方法筛选
我们可以使用isin()
方法来筛选DataFrame。例如,筛选出城市为’New York’或’Chicago’的行:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 60000, 90000, 85000]
}
df = pd.DataFrame(data)
filtered_df = df[df['City'].isin(['New York', 'Chicago'])]
print(filtered_df)
Output:
3.4 使用str.contains()方法筛选
我们可以使用str.contains()
方法来筛选DataFrame。例如,筛选出名字中包含字母’e’的行:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 60000, 90000, 85000]
}
df = pd.DataFrame(data)
filtered_df = df[df['Name'].str.contains('e')]
print(filtered_df)
Output:
4. 高级筛选操作
4.1 按行索引筛选
我们可以根据行索引来筛选DataFrame。例如,筛选出索引为0和2的行:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 60000, 90000, 85000]
}
df = pd.DataFrame(data)
filtered_df = df.loc[[0, 2]]
print(filtered_df)
Output:
4.2 按列索引筛选
我们可以根据列索引来筛选DataFrame。例如,筛选出’Name’和’City’列:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 60000, 90000, 85000]
}
df = pd.DataFrame(data)
filtered_df = df[['Name', 'City']]
print(filtered_df)
Output:
4.3 使用query()方法筛选
我们可以使用query()
方法来筛选DataFrame。例如,筛选出年龄大于25且城市为’Los Angeles’的行:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 60000, 90000, 85000]
}
df = pd.DataFrame(data)
filtered_df = df.query('Age > 25 & City == "Los Angeles"')
print(filtered_df)
Output:
4.4 使用between()方法筛选
我们可以使用between()
方法来筛选DataFrame。例如,筛选出年龄在25到30之间的行:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 60000, 90000, 85000]
}
df = pd.DataFrame(data)
filtered_df = df[df['Age'].between(25, 30)]
print(filtered_df)
Output:
5. 示例代码
以下是一些完整的pandas代码示例,每个示例代码都是独立的、可直接运行的,并且包含字符串pandasdataframe.com
。
示例代码1
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['Website'] == 'pandasdataframe.com']
print(filtered_df)
Output:
示例代码2
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['Name'].str.contains('a')]
print(filtered_df)
Output:
示例代码3
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[(df['Age'] > 25) & (df['Website'] == 'pandasdataframe.com')]
print(filtered_df)
Output:
示例代码4
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df.query('Age > 25 & Website == "pandasdataframe.com"')
print(filtered_df)
Output:
示例代码5
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['Age'].between(25, 30)]
print(filtered_df)
Output:
示例代码6
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['City'].isin(['New York', 'Chicago'])]
print(filtered_df)
Output:
示例代码7
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df.loc[[0, 2]]
print(filtered_df)
Output:
示例代码8
示例代码8
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[['Name', 'City']]
print(filtered_df)
Output:
示例代码9
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['City'].str.contains('New')]
print(filtered_df)
Output:
示例代码10
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[(df['Age'] > 25) & (df['City'].str.contains('Los'))]
print(filtered_df)
Output:
示例代码11
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['Website'].str.contains('pandasdataframe.com')]
print(filtered_df)
Output:
示例代码12
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['Age'] == 27]
print(filtered_df)
Output:
示例代码13
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['City'] == 'Phoenix']
print(filtered_df)
Output:
示例代码14
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['Name'].isin(['Alice', 'Eve'])]
print(filtered_df)
Output:
示例代码15
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df.loc[df['Name'].str.contains('David')]
print(filtered_df)
Output:
示例代码16
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['Age'] < 30]
print(filtered_df)
Output:
示例代码17
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[(df['Age'] > 25) | (df['City'] == 'Chicago')]
print(filtered_df)
Output:
示例代码18
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df.loc[df['Website'] == 'pandasdataframe.com']
print(filtered_df)
Output:
示例代码19
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[(df['Name'].str.contains('e')) & (df['Age'] > 24)]
print(filtered_df)
Output:
示例代码20
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'example.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)
filtered_df = df[df['Name'].str.startswith('A')]
print(filtered_df)
Output:
6. 总结
本文详细介绍了如何使用pandas库对DataFrame进行筛选操作,包括按列值筛选、按多个条件筛选、使用isin()
方法筛选、使用str.contains()
方法筛选、按行索引筛选、按列索引筛选、使用query()
方法筛选以及使用between()
方法筛选等。此外,通过20个独立的示例代码展示了具体的实现方法。这些示例代码中都包含了字符串pandasdataframe.com
,并且可以直接运行以供参考。