Skip to content

Commit 9747029

Browse files
committed
Merge pull request #5880 from jreback/series_empty
BUG: Regresssion in handling of empty Series as indexers to Series (GH5877)
2 parents 0bab303 + e73dd9c commit 9747029

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

doc/source/release.rst

+1
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ Bug Fixes
8181
- Bug in isnull handling ``NaT`` in an object array (:issue:`5443`)
8282
- Bug in ``to_datetime`` when passed a ``np.nan`` or integer datelike and a format string (:issue:`5863`)
8383
- Bug in groupby dtype conversion with datetimelike (:issue:`5869`)
84+
- Regresssion in handling of empty Series as indexers to Series (:issue:`5877`)
8485

8586
pandas 0.13.0
8687
-------------

pandas/core/common.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1660,7 +1660,7 @@ def _is_bool_indexer(key):
16601660
if key.dtype == np.object_:
16611661
key = np.asarray(_values_from_object(key))
16621662

1663-
if len(key) and not lib.is_bool_array(key):
1663+
if not lib.is_bool_array(key):
16641664
if isnull(key).any():
16651665
raise ValueError('cannot index with vector containing '
16661666
'NA / NaN values')

pandas/tests/test_series.py

+23
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from pandas import (Index, Series, DataFrame, isnull, notnull,
1717
bdate_range, date_range, _np_version_under1p7)
1818
from pandas.core.index import MultiIndex
19+
from pandas.core.indexing import IndexingError
1920
from pandas.tseries.index import Timestamp, DatetimeIndex
2021
import pandas.core.config as cf
2122
import pandas.lib as lib
@@ -795,6 +796,28 @@ def test_getitem_boolean_empty(self):
795796
self.assertEqual(s.index.name, 'index_name')
796797
self.assertEqual(s.dtype, np.int64)
797798

799+
# GH5877
800+
# indexing with empty series
801+
s = Series(['A', 'B'])
802+
expected = Series(np.nan,index=['C'],dtype=object)
803+
result = s[Series(['C'], dtype=object)]
804+
assert_series_equal(result, expected)
805+
806+
s = Series(['A', 'B'])
807+
expected = Series(dtype=object)
808+
result = s[Series([], dtype=object)]
809+
assert_series_equal(result, expected)
810+
811+
# invalid because of the boolean indexer
812+
# that's empty or not-aligned
813+
def f():
814+
s[Series([], dtype=bool)]
815+
self.assertRaises(IndexingError, f)
816+
817+
def f():
818+
s[Series([True], dtype=bool)]
819+
self.assertRaises(IndexingError, f)
820+
798821
def test_getitem_generator(self):
799822
gen = (x > 0 for x in self.series)
800823
result = self.series[gen]

0 commit comments

Comments
 (0)