pandas dataframe 根据列值进行过滤

pandas dataframe 根据列值进行过滤

参考:pandas dataframe filter by column value

在数据分析过程中,我们经常需要根据某些条件对数据进行过滤。Pandas 提供了多种方法来实现这一需求。本文将详细介绍如何使用 pandas dataframe 根据列值进行过滤。

1. 使用布尔索引进行过滤

布尔索引是一种常用的过滤方式。我们可以创建一个布尔序列,然后使用这个布尔序列来选择 dataframe 中的行。

例如,我们有一个包含多列数据的 dataframe,我们想要选择出 ‘column1’ 列值大于 50 的所有行。

import pandas as pd

# 创建一个dataframe
df = pd.DataFrame({
   'column1': [1, 51, 50, 100, 200],
   'column2': ['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3', 'pandasdataframe.com4', 'pandasdataframe.com5']
})

# 创建一个布尔序列
bool_series = df['column1'] > 50

# 使用布尔序列选择行
filtered_df = df[bool_series]
print(filtered_df)

Output:

pandas dataframe 根据列值进行过滤

2. 使用 query 方法进行过滤

query 方法是另一种过滤方式,它允许我们使用字符串表达式来定义过滤条件。

例如,我们想要选择出 ‘column1’ 列值大于 50 并且 ‘column2’ 列值包含 ‘pandasdataframe.com’ 的所有行。

import pandas as pd

# 创建一个dataframe
df = pd.DataFrame({
   'column1': [1, 51, 50, 100, 200],
   'column2': ['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3', 'pandasdataframe.com4', 'pandasdataframe.com5']
})

# 使用query方法选择行
filtered_df = df.query('column1 > 50 and column2.str.contains("pandasdataframe.com")')
print(filtered_df)

Output:

pandas dataframe 根据列值进行过滤

3. 使用 lociloc 进行过滤

lociloc 是 pandas 提供的两种基于标签和基于整数位置的数据选择方法。我们可以结合布尔索引使用这两种方法进行过滤。

例如,我们想要选择出 ‘column1’ 列值大于 50 的所有行,并且只保留 ‘column2’ 列。

import pandas as pd

# 创建一个dataframe
df = pd.DataFrame({
   'column1': [1, 51, 50, 100, 200],
   'column2': ['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3', 'pandasdataframe.com4', 'pandasdataframe.com5']
})

# 使用loc方法选择行和列
filtered_df = df.loc[df['column1'] > 50, 'column2']
print(filtered_df)

Output:

pandas dataframe 根据列值进行过滤

同样,我们也可以使用 iloc 方法选择行和列。需要注意的是,iloc 方法使用的是整数位置,而不是标签。

import pandas as pd

# 创建一个dataframe
df = pd.DataFrame({
   'column1': [1, 51, 50, 100, 200],
   'column2': ['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3', 'pandasdataframe.com4', 'pandasdataframe.com5']
})

# 使用iloc方法选择行和列
filtered_df = df.iloc[(df['column1'] > 50).values, 1]
print(filtered_df)

Output:

pandas dataframe 根据列值进行过滤

4. 使用 isin 方法进行过滤

isin 方法允许我们选择 dataframe 中某列值在给定列表中的所有行。

例如,我们想要选择出 ‘column2’ 列值在给定列表 [‘pandasdataframe.com1’, ‘pandasdataframe.com3’, ‘pandasdataframe.com5’] 中的所有行。

import pandas as pd

# 创建一个dataframe
df = pd.DataFrame({
   'column1': [1, 51, 50, 100, 200],
   'column2': ['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3', 'pandasdataframe.com4', 'pandasdataframe.com5']
})

# 使用isin方法选择行
filtered_df = df[df['column2'].isin(['pandasdataframe.com1', 'pandasdataframe.com3', 'pandasdataframe.com5'])]
print(filtered_df)

Output:

pandas dataframe 根据列值进行过滤

5. 使用 between 方法进行过滤

between 方法允许我们选择 dataframe 中某列值在给定范围内的所有行。

例如,我们想要选择出 ‘column1’ 列值在 50 到 150 之间的所有行。

import pandas as pd

# 创建一个dataframe
df = pd.DataFrame({
   'column1': [1, 51, 50, 100, 200],
   'column2': ['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3', 'pandasdataframe.com4', 'pandasdataframe.com5']
})

# 使用between方法选择行
filtered_df = df[df['column1'].between(50, 150)]
print(filtered_df)

Output:

pandas dataframe 根据列值进行过滤

6. 使用 filter 方法进行过滤

filter 方法允许我们根据列名或者行索引名进行过滤。这个方法对于选择包含特定字符串的列或者行非常有用。

例如,我们想要选择出列名包含 ‘column’ 的所有列。

import pandas as pd

# 创建一个dataframe
df = pd.DataFrame({
   'column1': [1, 51, 50, 100, 200],
   'column2': ['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3', 'pandasdataframe.com4', 'pandasdataframe.com5'],
   'other_column': ['other1', 'other2', 'other3', 'other4', 'other5']
})

# 使用filter方法选择列
filtered_df = df.filter(like='column')
print(filtered_df)

Output:

pandas dataframe 根据列值进行过滤

同样,我们也可以使用 filter 方法选择行。

import pandas as pd

# 创建一个dataframe
df = pd.DataFrame({
   'column1': [1, 51, 50, 100, 200],
   'column2': ['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3', 'pandasdataframe.com4', 'pandasdataframe.com5'],
   'other_column': ['other1', 'other2', 'other3', 'other4', 'other5']
}, index=['row1', 'row2', 'pandasdataframe.com_row', 'row4', 'row5'])

# 使用filter方法选择行
filtered_df = df.filter(axis=0, regex='pandasdataframe.com')
print(filtered_df)

Output:

pandas dataframe 根据列值进行过滤

以上就是 pandas dataframe 根据列值进行过滤的几种常用方法。在实际使用中,我们可以根据需要选择合适的方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程