2015-10-06 99 views
1

如何跳过(不应用)无过滤器?在大熊猫查询时,如何跳过无过滤器?

res = df[ 
    (df['Column1'] >= column1_min) & (df_item['Column1'] <= column1_max) & 
    (df['Column2'].isin(column2)) & 
    (df['Column3'] == column3) & 
    #..... 

也就是说,如果column1_mincolumn1_maxcolumn2column3None,那么就不要对它们进行过滤。在这里他们都应用在任何情况下。如果它们中的任何一个是None,它将搜索None值,这不是我想要的值。

回答

1

如果我深知,你可以试试这个:

res = df[((df['Column1'] >= column1_min) if column1_min != None else True) & 
     ((df['Column1'] <= column1_max) if column1_max != None else True) & 
     ((df['Column2'].isin(column2)) if column2 != None else True) & 
     ((df['Column3'] == column3 ) if column3 != None else True)] 

这是一个有点长,但预期应该工作。

如果值不是None,则评估条件。如果是None,则条件为True,这不会影响查询。