📌  相关文章
📜  根据应用于列的特定条件从数据框中删除行

📅  最后修改于: 2022-05-13 01:55:46.870000             🧑  作者: Mango

根据应用于列的特定条件从数据框中删除行

Pandas 提供了丰富的函数集合,用于在Python中执行数据分析。在执行数据分析时,我们经常需要过滤数据以删除不必要的行或列。

我们之前已经讨论过如何根据标签删除行或列。但是,在这篇文章中,我们将讨论如何根据应用于列的特定条件从数据框中删除行的几种方法。保留给定列上的应用条件评估为True的所有行。

要下载代码中使用的 CSV,请单击此处。

您将获得“nba.csv”数据集。从数据集中删除年龄低于 25 岁的所有玩家。

解决方案#1:我们将使用矢量化从数据集中过滤掉满足应用条件的行。

# importing pandas as pd
import pandas as pd
  
# Read the csv file and construct the 
# dataframe
df = pd.read_csv('nba.csv')
  
# Visualize the dataframe
print(df.head(15)
  
# Print the shape of the dataframe
print(df.shape)

输出 :

在这个数据框中,目前,我们有 458 行和 9 列。让我们使用向量化操作来过滤掉所有满足给定条件的行。

# Filter all rows for which the player's
# age is greater than or equal to 25
df_filtered = df[df['Age'] >= 25]
  
# Print the new dataframe
print(df_filtered.head(15)
  
# Print the shape of the dataframe
print(df_filtered.shape)

输出 :


正如我们在输出中看到的,返回的数据帧只包含那些年龄大于或等于 25 岁的球员。解决方案#2:我们可以使用DataFrame.drop()函数删除不满足给定条件的行。

# importing pandas as pd
import pandas as pd
  
# Read the csv file and construct the 
# dataframe
df = pd.read_csv('nba.csv')
  
# First filter out those rows which
# does not contain any data
df = df.dropna(how = 'all')
  
# Filter all rows for which the player's
# age is greater than or equal to 25
df.drop(df[df['Age'] < 25].index, inplace = True)
  
# Print the modified dataframe
print(df.head(15))
  
# Print the shape of the dataframe
print(df.shape)

输出 :


正如我们在输出中看到的那样,我们已经成功删除了所有不满足应用于“年龄”列的给定条件的行。