2017-09-24 91 views
2

嗨我有一个过滤器'米'集足够灵活,可以改变我。有时,我想通过Car或x_acft_body或任何其他字段等进行过滤。有时,我想要所有行都返回,通过注释和取消注释所需的行。但是在不改变后面的代码的情况下,在过滤器'm'行之后。pandas数据框筛选器为所有行返回True。怎么样?

我怎么能有一个过滤器,将返回真正的所有行,当我不想过滤器应用?对于例如像1==1但我知道这是行不通的。

我不想设置dfdata.somefield.notnull()等,因为我不会太确定这个字段是否总是不为空。我也不要想改变后续代码要像dfdata.groupby.即没有[m]

# set filter if needed 
m = ( 1==1 #& return true at all times 
#   (dfdata.Car == 'PG') #& 
#   (dfdata.x_acft_body == 'N')# & 
#   (dfdata.Car.isin(['PG', 'VJ', 'VZ'])) 
) 


dft1 = dfdata[m].groupby(['FLD1']).agg({'FLD2': 'count'}) 
+0

是不可能的集'M =(真)'为回报所有行? – jezrael

+0

返回KeyError:真 – ihightower

回答

1

您可以创建布尔常数,并通过改变它的最终面膜:

#True for return all rows 
m = (dfdata.Car == 'PG') | True 

和:

#False for apply filter 
m = (dfdata.Car == 'PG') | False 

First solut离子:

m = [True] * len(df.index) 

m = np.repeat(True, len(df.index)) 
+0

'''#假设应用过滤器 m =(dfdata.Car =='PG')| False''' <<<<这是多余的我想...你的意思是说'''m =(dfdata.Car =='PG')&False'''?只有这样它才会返回False所有行。 – ihightower

+0

是的,没有必要。如果可能,为真或者不是,False可以省略。 – jezrael

相关问题