Skip to content

Commit 14f7047

Browse files
committed
fixup! BUG: SparseSeries init from dict fixes
1 parent 8b5305b commit 14f7047

File tree

2 files changed

+23
-30
lines changed

2 files changed

+23
-30
lines changed

doc/source/whatsnew/v0.21.0.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ Sparse
179179
^^^^^^
180180

181181

182-
- Bug in instantiating :class:`SparseSeries` from ``dict`` with or without ``index`` (:issue:`16905`)
182+
- Bug in instantiating :class:`SparseSeries` from ``dict`` with or without ``index=`` kwarg (:issue:`16905`)
183183

184184
Reshaping
185185
^^^^^^^^^

pandas/tests/sparse/test_series.py

+22-29
Original file line numberDiff line numberDiff line change
@@ -1380,20 +1380,20 @@ def test_constructor_dict():
13801380
def test_constructor_dict_multiindex():
13811381
d = {('a', 'a'): 0., ('b', 'a'): 1., ('b', 'c'): 2.}
13821382
_d = sorted(d.items())
1383-
ser = SparseSeries(d)
1383+
result = SparseSeries(d)
13841384
expected = SparseSeries(
13851385
[x[1] for x in _d],
13861386
index=pd.MultiIndex.from_tuples([x[0] for x in _d]))
1387-
tm.assert_series_equal(ser, expected)
1387+
tm.assert_series_equal(result, expected)
13881388

13891389
d['z'] = 111.
13901390
_d.insert(0, ('z', d['z']))
1391-
ser = SparseSeries(d)
1391+
result = SparseSeries(d)
13921392
expected = SparseSeries([x[1] for x in _d],
13931393
index=pd.Index([x[0] for x in _d],
13941394
tupleize_cols=False))
1395-
ser = ser.reindex(index=expected.index)
1396-
tm.assert_series_equal(ser, expected)
1395+
result = result.reindex(index=expected.index)
1396+
tm.assert_series_equal(result, expected)
13971397

13981398

13991399
def test_constructor_dict_timedelta_index():
@@ -1417,43 +1417,36 @@ def test_constructor_dict_timedelta_index():
14171417
def test_constructor_subclass_dict():
14181418
data = tm.TestSubDict((x, 10.0 * x) for x in range(10))
14191419
series = SparseSeries(data)
1420-
refseries = SparseSeries(dict(compat.iteritems(data)))
1421-
tm.assert_sp_series_equal(refseries, series)
1420+
expected = SparseSeries(dict(compat.iteritems(data)))
1421+
tm.assert_sp_series_equal(series, expected)
14221422

14231423

1424-
def test_constructor_dict_datetime64_index():
1424+
@pytest.mark.parametrize(
1425+
'datetime_type', (np.datetime64,
1426+
pd.Timestamp,
1427+
lambda x: datetime.strptime(x, '%Y-%m-%d')))
1428+
def test_constructor_dict_datetime64_index(datetime_type):
14251429
# GH 9456
1426-
dates_as_str = ['1984-02-19', '1988-11-06', '1989-12-03', '1990-03-15']
1430+
dates = ['1984-02-19', '1988-11-06', '1989-12-03', '1990-03-15']
14271431
values = [42544017.198965244, 1234565, 40512335.181958228, -1]
14281432

1429-
def create_data(constructor):
1430-
return dict(zip((constructor(x) for x in dates_as_str), values))
1431-
1432-
data_datetime64 = create_data(np.datetime64)
1433-
data_datetime = create_data(lambda x: datetime.strptime(x, '%Y-%m-%d'))
1434-
data_Timestamp = create_data(pd.Timestamp)
1435-
1436-
expected = SparseSeries(values, (pd.Timestamp(x) for x in dates_as_str))
1433+
result = SparseSeries(dict(zip(map(datetime_type, dates), values)))
1434+
expected = SparseSeries(values, map(pd.Timestamp, dates))
14371435

1438-
result_datetime64 = SparseSeries(data_datetime64)
1439-
result_datetime = SparseSeries(data_datetime)
1440-
result_Timestamp = SparseSeries(data_Timestamp)
1441-
1442-
tm.assert_sp_series_equal(result_datetime64, expected)
1443-
tm.assert_sp_series_equal(result_datetime, expected)
1444-
tm.assert_sp_series_equal(result_Timestamp, expected)
1436+
tm.assert_sp_series_equal(result, expected)
14451437

14461438

14471439
def test_orderedDict_ctor():
14481440
# GH3283
14491441
data = OrderedDict(('col%s' % i, np.random.random()) for i in range(12))
1450-
s = SparseSeries(data)
1451-
tm.assert_numpy_array_equal(s.values.values, np.array(list(data.values())))
1442+
1443+
series = SparseSeries(data)
1444+
expected = SparseSeries(list(data.values()), list(data.keys()))
1445+
tm.assert_sp_series_equal(series, expected)
14521446

14531447
# Test with subclass
14541448
class A(OrderedDict):
14551449
pass
14561450

1457-
data = A(('col%s' % i, np.random.random()) for i in range(12))
1458-
s = SparseSeries(data)
1459-
tm.assert_numpy_array_equal(s.values.values, np.array(list(data.values())))
1451+
series = SparseSeries(A(data))
1452+
tm.assert_sp_series_equal(series, expected)

0 commit comments

Comments
 (0)