如何跳过(不适用)无效的过滤器?
res = df[
(df['Column1'] >= column1_min) & (df_item['Column1'] <= column1_max) &
(df['Column2'].isin(column2) ) &
(df['Column3'] == column3) &
#.....
即,如果column1_min
或column1_max
或column2
或column3
为None
,则不要对其进行过滤。在任何情况下,他们都应用于此。如果其中任何一个是None
,则会搜索None
值并不是我想要的值。
答案 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
,这不会影响查询。