在查询pandas时,如何跳过None的过滤器?

时间:2015-10-06 10:53:32

标签: python pandas

如何跳过(不适用)无效的过滤器?

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

即,如果column1_mincolumn1_maxcolumn2column3None,则不要对其进行过滤。在任何情况下,他们都应用于此。如果其中任何一个是None,则会搜索None值并不是我想要的值。

1 个答案:

答案 0 :(得分: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,这不会影响查询。