如何通过列值的条件在DataFrame中删除行

如何通过列值的条件在DataFrame中删除行

在这篇文章中,我们将看到几个例子,说明如何根据应用于某一列的某些条件从数据框架中删除行。

Pandas为数据分析师提供了一种使用dataframe.drop()方法来删除和过滤数据帧的方法。我们可以使用这个方法来删除这些不满足给定条件的行。

让我们创建一个Pandas数据框架。

# import pandas library
import pandas as pd
  
# dictionary with list object in values
details = {
    'Name' : ['Ankit', 'Aishwarya', 'Shaurya',
              'Shivangi', 'Priya', 'Swapnil'],
    'Age' : [23, 21, 22, 21, 24, 25],
    'University' : ['BHU', 'JNU', 'DU', 'BHU', 
                    'Geu', 'Geu'],
}
  
# creating a Dataframe object 
df = pd.DataFrame(details, columns = ['Name', 'Age',
                                      'University'],
                  index = ['a', 'b', 'c', 'd', 'e',
                           'f'])
  
df
Python

输出:

如何通过列值的条件在DataFrame中删除行?

例子1:根据某一列的条件删除行。

# import pandas library
import pandas as pd
  
# dictionary with list object in values
details = {
    'Name' : ['Ankit', 'Aishwarya', 'Shaurya',
              'Shivangi', 'Priya', 'Swapnil'],
    'Age' : [23, 21, 22, 21, 24, 25],
    'University' : ['BHU', 'JNU', 'DU', 'BHU', 
                    'Geu', 'Geu'],
}
  
# creating a Dataframe object 
df = pd.DataFrame(details, columns = ['Name', 'Age',
                                      'University'],
                  index = ['a', 'b', 'c', 'd', 'e', 'f'])
  
# get names of indexes for which
# column Age has value 21
index_names = df[ df['Age'] == 21 ].index
  
# drop these row indexes
# from dataFrame
df.drop(index_names, inplace = True)
  
df
Python

输出 :

如何通过列值的条件在DataFrame中删除行?

例子2:根据一列的多个条件删除行。

# import pandas library
import pandas as pd
  
# dictionary with list object in values
details = {
    'Name' : ['Ankit', 'Aishwarya', 'Shaurya', 
              'Shivangi', 'Priya', 'Swapnil'],
    'Age' : [23, 21, 22, 21, 24, 25],
    'University' : ['BHU', 'JNU', 'DU', 'BHU',
                    'Geu', 'Geu'],
}
  
# creating a Dataframe object 
df = pd.DataFrame(details, columns = ['Name', 'Age',
                                      'University'],
                  index = ['a', 'b', 'c', 'd', 'e', 'f'])
  
# get names of indexes for which column Age has value >= 21
# and <= 23
index_names = df[ (df['Age'] >= 21) & (df['Age'] <= 23)].index
  
# drop these given row
# indexes from dataFrame
df.drop(index_names, inplace = True)
  
df
Python

输出 :

如何通过列值的条件在DataFrame中删除行?

例子3:根据不同列上的多个条件删除行。

# import pandas library
import pandas as pd
  
# dictionary with list object in values
details = {
    'Name' : ['Ankit', 'Aishwarya', 'Shaurya',
              'Shivangi', 'Priya', 'Swapnil'],
    'Age' : [23, 21, 22, 21, 24, 25],
    'University' : ['BHU', 'JNU', 'DU', 'BHU', 
                    'Geu', 'Geu'],
}
  
# creating a Dataframe object 
df = pd.DataFrame(details, columns = ['Name', 'Age',
                                      'University'],
                  index = ['a', 'b', 'c', 'd', 'e', 'f'])
  
# get names of indexes for which
# column Age has value >= 21
# and column University is BHU
index_names = df[ (df['Age'] >= 21) & (df['University'] == 'BHU')].index
  
# drop these given row
# indexes from dataFrame
df.drop(index_names, inplace = True)
  
df
Python

输出 :

如何通过列值的条件在DataFrame中删除行?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册