pandas如何去掉、过滤数据集中的某些值或者某些行?

摘要

在进行数据分析与清理中,我们可能常常需要在数据集中去掉某些异常值。具体来说,看看下面的例子。
pandas如何去掉、过滤数据集中的某些值或者某些行?



1.去掉某些具体值


数据集df中,对于属性appPlatform(最后一列),我们想删除掉取值为2的那些样本。
如何做?非常简单。
[python] view plain copy
  1. import pandas as pd  
[python] view plain copy
  1. df[(True-df['appPlatform'].isin([2]))]  
pandas如何去掉、过滤数据集中的某些值或者某些行?
当然,有时候我们需要去掉不止一个值,这个时候只需要在isin([])的列表中添加。更具体来说,例如,对于appID这个属性,我们想去掉appID=278和appID=382的样本。
[python] view plain copy
  1. df[(True-df['appID'].isin([278,382]))]  

pandas如何去掉、过滤数据集中的某些值或者某些行?


另外,我们有时候并不只是考虑某一列,还需要考虑另外若干列的情况。例如,我们需要过滤掉appPlatform=2而且appID=278和appID=382的样本呢?非常简单。
[python] view plain copy
  1. df[(True-df['appID'].isin([278,382]))&(True-df['appPlatform'].isin([2]))]  
.其实,在这里我们看到,就是由两部分组成的,第一部分就是appID中等于278和382的,另外一部分就是appPlatform中等于2的。两者取逻辑关系 与(&)
pandas如何去掉、过滤数据集中的某些值或者某些行?


2.过滤掉某个范围的值

上面我们是了解了如何取掉某个具体值,下面,我们要看看如何过滤掉某个范围的值。
对于数据集df,我们想过滤掉creativeID(第一列)中ID值大于10000的样本。
[python] view plain copy
  1. df[df['creativeID']<=10000]  
pandas如何去掉、过滤数据集中的某些值或者某些行?

另外,如果要考虑多列的话,其实和上面一样,将两种情况做逻辑与(&)就可以,不过值得注意的是,每个条件要用括号()括起来。