Skip to content

Commit 005b264

Browse files
committed
BUG: work around NumPy 1.6.1 datetime64 bug, close #1561
1 parent 873409d commit 005b264

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

RELEASE.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ pandas 0.8.1
6161
- Selection of multiple SparseDataFrame columns by list in __getitem__ (#1585)
6262
- Override Index.tolist for compatibility with MultiIndex (#1576)
6363
- Fix hierarchical summing bug with MultiIndex of length 1 (#1568)
64+
- Work around numpy.concatenate use/bug in Series.set_value (#1561)
6465

6566
pandas 0.8.0
6667
============

pandas/core/series.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,11 @@ def set_value(self, label, value):
742742
self.index._engine.set_value(self, label, value)
743743
return self
744744
except KeyError:
745-
new_index = np.concatenate([self.index.values, [label]])
745+
if len(self.index) == 0:
746+
new_index = Index([label])
747+
else:
748+
new_index = self.index.insert(len(self), label)
749+
746750
new_values = np.concatenate([self.values, [value]])
747751
return Series(new_values, index=new_index, name=self.name)
748752

pandas/tseries/tests/test_timeseries.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1691,8 +1691,22 @@ def test_datetimeindex_union_join_empty(self):
16911691
result = dti.join(empty)
16921692
self.assert_(isinstance(result, DatetimeIndex))
16931693

1694-
# TODO: test merge & concat with datetime64 block
1694+
def test_series_set_value(self):
1695+
# #1561
16951696

1697+
dates = [datetime(2001, 1, 1), datetime(2001, 1, 2)]
1698+
index = DatetimeIndex(dates)
1699+
1700+
s = Series().set_value(dates[0], 1.)
1701+
s2 = s.set_value(dates[1], np.nan)
1702+
1703+
exp = Series([1., np.nan], index=index)
1704+
1705+
assert_series_equal(s2, exp)
1706+
1707+
# s = Series(index[:1], index[:1])
1708+
# s2 = s.set_value(dates[1], index[1])
1709+
# self.assert_(s2.values.dtype == 'M8[ns]')
16961710

16971711
class TestSeriesDatetime64(unittest.TestCase):
16981712

0 commit comments

Comments
 (0)