Skip to content

Commit 4d50f03

Browse files
committed
BUG: close #839, exception on assigning NA to bool or int64 series
1 parent f6c9569 commit 4d50f03

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

RELEASE.rst

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ pandas 0.7.1
6363
- Fix groupby case resulting in malformed dataframe (#814)
6464
- Fix behavior of reindex of Series dropping name (#812)
6565
- Improve on redudant groupby computation (#775)
66+
- Catch possible NA assignment to int/bool series with exception (#839)
6667

6768
pandas 0.7.0
6869
============

pandas/core/series.py

+4
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,10 @@ def _set_labels(self, key, value):
520520
self._set_values(indexer, value)
521521

522522
def _set_values(self, key, value):
523+
if (isnull(value) and
524+
issubclass(self.dtype.type, (np.integer, np.bool_))):
525+
raise ValueError('Cannot assign nan to integer series')
526+
523527
self.values[key] = value
524528

525529
# help out SparseSeries

pandas/tests/test_series.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -1149,9 +1149,20 @@ def test_between(self):
11491149
expected = s[5:16].dropna()
11501150
assert_series_equal(result, expected)
11511151

1152+
def test_setitem_na_exception(self):
1153+
def testme1():
1154+
s = Series([2,3,4,5,6,7,8,9,10])
1155+
s[::2] = np.nan
1156+
1157+
def testme2():
1158+
s = Series([True, True, False, False])
1159+
s[::2] = np.nan
1160+
1161+
self.assertRaises(Exception, testme1)
1162+
self.assertRaises(Exception, testme2)
1163+
11521164
def test_scalar_na_cmp_corners(self):
11531165
s = Series([2,3,4,5,6,7,8,9,10])
1154-
s[::2] = np.nan
11551166

11561167
def tester(a, b):
11571168
return a & b

0 commit comments

Comments
 (0)