Skip to content

Commit ef03d59

Browse files
committed
BUG: #14095. Amend eval() resolvers kwarg to accept lists
1 parent 10bf721 commit ef03d59

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

doc/source/whatsnew/v0.19.0.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,3 +1290,4 @@ Bug Fixes
12901290
- Bug in ``.to_string()`` when called with an integer ``line_width`` and ``index=False`` raises an UnboundLocalError exception because ``idx`` referenced before assignment.
12911291

12921292
- Bug in ``read_csv()``, where aliases for utf-xx (e.g. UTF-xx, UTF_xx, utf_xx) raised UnicodeDecodeError (:issue:`13549`)
1293+
- Bug in ``eval()`` where the ``resolvers`` argument would not accept a list (:issue`14095`)

pandas/core/frame.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2266,7 +2266,7 @@ def eval(self, expr, inplace=None, **kwargs):
22662266
resolvers = dict(self.iteritems()), index_resolvers
22672267
if 'target' not in kwargs:
22682268
kwargs['target'] = self
2269-
kwargs['resolvers'] = kwargs.get('resolvers', ()) + resolvers
2269+
kwargs['resolvers'] = kwargs.get('resolvers', ()) + tuple(resolvers)
22702270
return _eval(expr, inplace=inplace, **kwargs)
22712271

22722272
def select_dtypes(self, include=None, exclude=None):

pandas/tests/frame/test_query_eval.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ def test_query_non_str(self):
147147
with tm.assertRaisesRegexp(ValueError, msg):
148148
df.query(111)
149149

150+
def test_eval_resolvers_as_list(self):
151+
df = DataFrame(randn(10, 2), columns=list('ab'))
152+
dict1 = {'a': 1}
153+
dict2 = {'b': 2}
154+
self.assertTrue(df.eval('a + b', resolvers=[dict1, dict2]) == dict1['a'] + dict2['b'])
155+
150156

151157
class TestDataFrameQueryWithMultiIndex(tm.TestCase):
152158

0 commit comments

Comments
 (0)