diff --git a/pandas/core/algorithms.py b/pandas/core/algorithms.py index 323cbe8e93b78..d40d6f2e4134d 100644 --- a/pandas/core/algorithms.py +++ b/pandas/core/algorithms.py @@ -113,6 +113,8 @@ def isin(comps, values): raise TypeError("only list-like objects are allowed to be passed" " to isin(), you passed a " "[{0}]".format(type(values).__name__)) + if not isinstance(values, np.ndarray): + values = list(values) # GH11232 # work-around for numpy < 1.8 and comparisions on py3 diff --git a/pandas/tests/series/test_analytics.py b/pandas/tests/series/test_analytics.py index af648d34637df..b8e6bf2c05910 100644 --- a/pandas/tests/series/test_analytics.py +++ b/pandas/tests/series/test_analytics.py @@ -1118,6 +1118,9 @@ def test_isin_with_i8(self): result = s.isin([np.datetime64(s[1])]) assert_series_equal(result, expected2) + result = s.isin(set(s[0:2])) + assert_series_equal(result, expected) + # timedelta64[ns] s = Series(pd.to_timedelta(lrange(5), unit='d')) result = s.isin(s[0:2]) diff --git a/pandas/tests/test_algos.py b/pandas/tests/test_algos.py index 68864306525dc..c6e7fa350d47c 100644 --- a/pandas/tests/test_algos.py +++ b/pandas/tests/test_algos.py @@ -345,6 +345,10 @@ def test_basic(self): expected = np.array([True, False]) tm.assert_numpy_array_equal(result, expected) + result = algos.isin(pd.Series([1, 2]), set([1])) + expected = np.array([True, False]) + tm.assert_numpy_array_equal(result, expected) + result = algos.isin(['a', 'b'], ['a']) expected = np.array([True, False]) tm.assert_numpy_array_equal(result, expected) @@ -353,6 +357,10 @@ def test_basic(self): expected = np.array([True, False]) tm.assert_numpy_array_equal(result, expected) + result = algos.isin(pd.Series(['a', 'b']), set(['a'])) + expected = np.array([True, False]) + tm.assert_numpy_array_equal(result, expected) + result = algos.isin(['a', 'b'], [1]) expected = np.array([False, False]) tm.assert_numpy_array_equal(result, expected) @@ -366,11 +374,23 @@ def test_basic(self): expected = np.array([True, True, False]) tm.assert_numpy_array_equal(result, expected) + result = algos.isin(arr, set(arr[0:2])) + expected = np.array([True, True, False]) + tm.assert_numpy_array_equal(result, expected) + arr = pd.timedelta_range('1 day', periods=3).values result = algos.isin(arr, [arr[0]]) expected = np.array([True, False, False]) tm.assert_numpy_array_equal(result, expected) + result = algos.isin(arr, arr[0:2]) + expected = np.array([True, True, False]) + tm.assert_numpy_array_equal(result, expected) + + result = algos.isin(arr, set(arr[0:2])) + expected = np.array([True, True, False]) + tm.assert_numpy_array_equal(result, expected) + def test_large(self): s = pd.date_range('20000101', periods=2000000, freq='s').values