Skip to content

Commit

Permalink
Enhance apply_filter_query to be a no-op if no filters are supplied.
Browse files Browse the repository at this point in the history
  • Loading branch information
jiffyclub committed Apr 9, 2014
1 parent 67e5d6d commit 0dbd3cb
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
12 changes: 8 additions & 4 deletions urbansim/models/hedonic.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,29 @@
import statsmodels.formula.api as smf


def apply_filter_query(df, filters):
def apply_filter_query(df, filters=None):
"""
Use the DataFrame.query method to filter a table down to the
desired rows.
Parameters
----------
df : pandas.DataFrame
filters : list of str
filters : list of str, optional
List of filters to apply. Will be joined together with
' and ' and passed to DataFrame.query.
If not supplied no filtering will be done.
Returns
-------
filtered_df : pandas.DataFrame
"""
query = ' and '.join(filters)
return df.query(query)
if filters:
query = ' and '.join(filters)
return df.query(query)
else:
return df


def fit_model(df, filters, model_expression):
Expand Down
8 changes: 8 additions & 0 deletions urbansim/models/tests/test_hedonic.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,12 @@ def test_apply_filter_query_or(test_df):
pdt.assert_frame_equal(filtered, expected)


def test_apply_filter_query_no_filter(test_df):
filters = []
filtered = hedonic.apply_filter_query(test_df, filters)
expected = test_df
pdt.assert_frame_equal(filtered, expected)


# def test_fit_model(test_df):
# filters = []

0 comments on commit 0dbd3cb

Please sign in to comment.