def test_nested_logical_conditions(sample_df): step = FilterStep( name='filter', condition={ 'and': [ { 'or': [ { 'column': 'colA', 'operator': 'eq', 'value': 'toto', }, { 'column': 'colC', 'operator': 'lt', 'value': 33, }, ] }, {'column': 'colB', 'operator': 'gt', 'value': 2}, ] }, ) df_result = execute_filter(step, sample_df) assert_dataframes_equals(df_result, DataFrame({'colA': ['tata'], 'colB': [3], 'colC': [25]}))
def test_simple_notnull_filter(sample_df): step = FilterStep( name='filter', condition={ 'column': 'colA', 'operator': 'notnull', }, ) df_result = execute_filter(step, sample_df) assert_dataframes_equals(df_result, sample_df)
def test_simple_null_filter(sample_df): step = FilterStep( name='filter', condition={ 'column': 'colA', 'operator': 'isnull', }, ) df_result = execute_filter(step, sample_df) assert df_result.empty
def test_simple_lt_filter(sample_df): step = FilterStep( name='filter', condition={ 'column': 'colB', 'operator': 'lt', 'value': 2, }, ) df_result = execute_filter(step, sample_df) assert_dataframes_equals(df_result, DataFrame({'colA': ['toto'], 'colB': [1], 'colC': [100]}))
def test_simple_eq_filter(sample_df): step = FilterStep( name='filter', condition={ 'column': 'colA', 'operator': 'eq', 'value': 'tutu', }, ) df_result = execute_filter(step, sample_df) assert_dataframes_equals(df_result, DataFrame({'colA': ['tutu'], 'colB': [2], 'colC': [50]}))
def test_simple_matches_filter(sample_df): step = FilterStep( name='filter', condition={ 'column': 'colA', 'operator': 'matches', 'value': 'a.a', }, ) df_result = execute_filter(step, sample_df) assert_dataframes_equals(df_result, DataFrame({'colA': ['tata'], 'colB': [3], 'colC': [25]}))
def test_simple_ne_filter(sample_df): step = FilterStep( name='filter', condition={ 'column': 'colA', 'operator': 'ne', 'value': 'tutu', }, ) df_result = execute_filter(step, sample_df) assert_dataframes_equals( df_result, DataFrame({'colA': ['toto', 'tata'], 'colB': [1, 3], 'colC': [100, 25]}) )
def test_and_logical_conditions(sample_df): step = FilterStep( name='filter', condition={ 'and': [ { 'column': 'colB', 'operator': 'le', 'value': 2, }, { 'column': 'colC', 'operator': 'gt', 'value': 75, }, ] }, ) df_result = execute_filter(step, sample_df) assert_dataframes_equals(df_result, DataFrame({'colA': ['toto'], 'colB': [1], 'colC': [100]}))