From c5578274f3307b0591f3f787c1a53a046dc7441d Mon Sep 17 00:00:00 2001 From: sinhrks Date: Thu, 16 Apr 2015 21:42:24 +0900 Subject: [PATCH] TST: Check index names --- pandas/io/tests/test_parsers.py | 16 ++--- pandas/io/tests/test_pytables.py | 5 +- pandas/io/tests/test_sql.py | 20 +++--- pandas/io/tests/test_stata.py | 4 +- pandas/sparse/tests/test_sparse.py | 14 +++-- pandas/stats/tests/test_moments.py | 3 +- pandas/tests/test_frame.py | 20 +++--- pandas/tests/test_groupby.py | 22 ++++--- pandas/tests/test_index.py | 4 +- pandas/tests/test_multilevel.py | 33 +++++++--- pandas/tests/test_panel.py | 8 ++- pandas/tseries/tests/test_base.py | 88 +++++++++++++-------------- pandas/tseries/tests/test_resample.py | 12 ++-- pandas/util/testing.py | 25 +++++--- 14 files changed, 155 insertions(+), 119 deletions(-) diff --git a/pandas/io/tests/test_parsers.py b/pandas/io/tests/test_parsers.py index 799872d036c4f..d01fdb4d75886 100755 --- a/pandas/io/tests/test_parsers.py +++ b/pandas/io/tests/test_parsers.py @@ -272,7 +272,7 @@ def test_squeeze(self): b,2 c,3 """ - expected = Series([1, 2, 3], ['a', 'b', 'c']) + expected = Series([1, 2, 3], index=Index(['a', 'b', 'c'], name=0)) result = self.read_table(StringIO(data), sep=',', index_col=0, header=None, squeeze=True) tm.assert_isinstance(result, Series) @@ -981,8 +981,8 @@ def test_yy_format(self): parse_dates=[['date', 'time']]) idx = DatetimeIndex([datetime(2009, 1, 31, 0, 10, 0), datetime(2009, 2, 28, 10, 20, 0), - datetime(2009, 3, 31, 8, 30, 0)]).asobject - idx.name = 'date_time' + datetime(2009, 3, 31, 8, 30, 0)], + dtype=object, name='date_time') xp = DataFrame({'B': [1, 3, 5], 'C': [2, 4, 6]}, idx) tm.assert_frame_equal(rs, xp) @@ -990,8 +990,8 @@ def test_yy_format(self): parse_dates=[[0, 1]]) idx = DatetimeIndex([datetime(2009, 1, 31, 0, 10, 0), datetime(2009, 2, 28, 10, 20, 0), - datetime(2009, 3, 31, 8, 30, 0)]).asobject - idx.name = 'date_time' + datetime(2009, 3, 31, 8, 30, 0)], + dtype=object, name='date_time') xp = DataFrame({'B': [1, 3, 5], 'C': [2, 4, 6]}, idx) tm.assert_frame_equal(rs, xp) @@ -3110,17 +3110,17 @@ def test_skiprows_lineterminator(self): expected = pd.DataFrame([['2007/01/01', '01:00', 0.2140, 'U', 'M'], ['2007/01/01', '02:00', 0.2141, 'M', 'O'], ['2007/01/01', '04:00', 0.2142, 'D', 'M']], - columns=['date', 'time', 'var', 'flag', + columns=['date', 'time', 'var', 'flag', 'oflag']) # test with the three default lineterminators LF, CR and CRLF df = self.read_csv(StringIO(data), skiprows=1, delim_whitespace=True, names=['date', 'time', 'var', 'flag', 'oflag']) tm.assert_frame_equal(df, expected) - df = self.read_csv(StringIO(data.replace('\n', '\r')), + df = self.read_csv(StringIO(data.replace('\n', '\r')), skiprows=1, delim_whitespace=True, names=['date', 'time', 'var', 'flag', 'oflag']) tm.assert_frame_equal(df, expected) - df = self.read_csv(StringIO(data.replace('\n', '\r\n')), + df = self.read_csv(StringIO(data.replace('\n', '\r\n')), skiprows=1, delim_whitespace=True, names=['date', 'time', 'var', 'flag', 'oflag']) tm.assert_frame_equal(df, expected) diff --git a/pandas/io/tests/test_pytables.py b/pandas/io/tests/test_pytables.py index 03e7a8eae549d..ec33e53481950 100644 --- a/pandas/io/tests/test_pytables.py +++ b/pandas/io/tests/test_pytables.py @@ -1593,9 +1593,10 @@ def make_index(names=None): # series _maybe_remove(store, 's') - s = Series(np.zeros(12), index=make_index(['date',None,None])) + s = Series(np.zeros(12), index=make_index(['date', None, None])) store.append('s',s) - tm.assert_series_equal(store.select('s'),s) + xp = Series(np.zeros(12), index=make_index(['date', 'level_1', 'level_2'])) + tm.assert_series_equal(store.select('s'), xp) # dup with column _maybe_remove(store, 'df') diff --git a/pandas/io/tests/test_sql.py b/pandas/io/tests/test_sql.py index ac266dd77c984..f3f00862054e4 100644 --- a/pandas/io/tests/test_sql.py +++ b/pandas/io/tests/test_sql.py @@ -1323,19 +1323,19 @@ def test_double_precision(self): 'i64':Series([5,], dtype='int64'), }) - df.to_sql('test_dtypes', self.conn, index=False, if_exists='replace', + df.to_sql('test_dtypes', self.conn, index=False, if_exists='replace', dtype={'f64_as_f32':sqlalchemy.Float(precision=23)}) res = sql.read_sql_table('test_dtypes', self.conn) - + # check precision of float64 - self.assertEqual(np.round(df['f64'].iloc[0],14), + self.assertEqual(np.round(df['f64'].iloc[0],14), np.round(res['f64'].iloc[0],14)) # check sql types meta = sqlalchemy.schema.MetaData(bind=self.conn) meta.reflect() col_dict = meta.tables['test_dtypes'].columns - self.assertEqual(str(col_dict['f32'].type), + self.assertEqual(str(col_dict['f32'].type), str(col_dict['f64_as_f32'].type)) self.assertTrue(isinstance(col_dict['f32'].type, sqltypes.Float)) self.assertTrue(isinstance(col_dict['f64'].type, sqltypes.Float)) @@ -1729,11 +1729,11 @@ def test_illegal_names(self): df = DataFrame([[1, 2], [3, 4]], columns=['a', 'b']) # Raise error on blank - self.assertRaises(ValueError, df.to_sql, "", self.conn, + self.assertRaises(ValueError, df.to_sql, "", self.conn, flavor=self.flavor) for ndx, weird_name in enumerate(['test_weird_name]','test_weird_name[', - 'test_weird_name`','test_weird_name"', 'test_weird_name\'', + 'test_weird_name`','test_weird_name"', 'test_weird_name\'', '_b.test_weird_name_01-30', '"_b.test_weird_name_01-30"']): df.to_sql(weird_name, self.conn, flavor=self.flavor) sql.table_exists(weird_name, self.conn) @@ -1839,12 +1839,12 @@ def test_illegal_names(self): for ndx, illegal_name in enumerate(['test_illegal_name]','test_illegal_name[', 'test_illegal_name`','test_illegal_name"', 'test_illegal_name\'', '']): df = DataFrame([[1, 2], [3, 4]], columns=['a', 'b']) - self.assertRaises(ValueError, df.to_sql, illegal_name, self.conn, + self.assertRaises(ValueError, df.to_sql, illegal_name, self.conn, flavor=self.flavor, index=False) df2 = DataFrame([[1, 2], [3, 4]], columns=['a', illegal_name]) c_tbl = 'test_illegal_col_name%d'%ndx - self.assertRaises(ValueError, df2.to_sql, 'test_illegal_col_name', + self.assertRaises(ValueError, df2.to_sql, 'test_illegal_col_name', self.conn, flavor=self.flavor, index=False) @@ -2021,7 +2021,7 @@ def test_tquery(self): frame = tm.makeTimeDataFrame() sql.write_frame(frame, name='test_table', con=self.db) result = sql.tquery("select A from test_table", self.db) - expected = frame.A + expected = Series(frame.A, frame.index) # not to have name result = Series(result, frame.index) tm.assert_series_equal(result, expected) @@ -2359,7 +2359,7 @@ def test_tquery(self): cur.execute(drop_sql) sql.write_frame(frame, name='test_table', con=self.db, flavor='mysql') result = sql.tquery("select A from test_table", self.db) - expected = frame.A + expected = Series(frame.A, frame.index) # not to have name result = Series(result, frame.index) tm.assert_series_equal(result, expected) diff --git a/pandas/io/tests/test_stata.py b/pandas/io/tests/test_stata.py index 0aaf018b21584..97bbfb0edf92c 100644 --- a/pandas/io/tests/test_stata.py +++ b/pandas/io/tests/test_stata.py @@ -875,8 +875,8 @@ def test_categorical_sorting(self): parsed_117.index = np.arange(parsed_117.shape[0]) codes = [-1, -1, 0, 1, 1, 1, 2, 2, 3, 4] categories = ["Poor", "Fair", "Good", "Very good", "Excellent"] - expected = pd.Series(pd.Categorical.from_codes(codes=codes, - categories=categories)) + cat = pd.Categorical.from_codes(codes=codes, categories=categories) + expected = pd.Series(cat, name='srh') tm.assert_series_equal(expected, parsed_115["srh"]) tm.assert_series_equal(expected, parsed_117["srh"]) diff --git a/pandas/sparse/tests/test_sparse.py b/pandas/sparse/tests/test_sparse.py index 454cbcd5320e9..dd1d10f3d15ed 100644 --- a/pandas/sparse/tests/test_sparse.py +++ b/pandas/sparse/tests/test_sparse.py @@ -36,7 +36,7 @@ import pandas.tests.test_panel as test_panel import pandas.tests.test_series as test_series -from .test_array import assert_sp_array_equal +from pandas.sparse.tests.test_array import assert_sp_array_equal import warnings warnings.filterwarnings(action='ignore', category=FutureWarning) @@ -281,7 +281,7 @@ def test_constructor_nonnan(self): arr = [0, 0, 0, nan, nan] sp_series = SparseSeries(arr, fill_value=0) assert_equal(sp_series.values.values, arr) - + # GH 9272 def test_constructor_empty(self): sp = SparseSeries() @@ -997,7 +997,7 @@ def test_constructor_ndarray(self): ValueError, "^Column length", SparseDataFrame, self.frame.values, columns=self.frame.columns[:-1]) - # GH 9272 + # GH 9272 def test_constructor_empty(self): sp = SparseDataFrame() self.assertEqual(len(sp.index), 0) @@ -1283,7 +1283,9 @@ def _check_frame(frame): frame['E'] = to_insert expected = to_insert.to_dense().reindex( frame.index).fillna(to_insert.fill_value) - assert_series_equal(frame['E'].to_dense(), expected) + result = frame['E'].to_dense() + assert_series_equal(result, expected, check_names=False) + self.assertEqual(result.name, 'E') # insert Series frame['F'] = frame['A'].to_dense() @@ -1747,8 +1749,8 @@ def test_constructor(self): with tm.assertRaisesRegexp(TypeError, "input must be a dict, a 'list' was passed"): SparsePanel(['a', 'b', 'c']) - - # GH 9272 + + # GH 9272 def test_constructor_empty(self): sp = SparsePanel() self.assertEqual(len(sp.items), 0) diff --git a/pandas/stats/tests/test_moments.py b/pandas/stats/tests/test_moments.py index a30286479c847..fe64937d292c9 100644 --- a/pandas/stats/tests/test_moments.py +++ b/pandas/stats/tests/test_moments.py @@ -1254,7 +1254,8 @@ def _check_pairwise_moment(self, func, *args, **kwargs): actual = panel.ix[:, 1, 5] expected = func(self.frame[1], self.frame[5], *args, **kwargs) - tm.assert_series_equal(actual, expected) + tm.assert_series_equal(actual, expected, check_names=False) + self.assertEqual(actual.name, 5) def test_flex_binary_moment(self): # GH3155 diff --git a/pandas/tests/test_frame.py b/pandas/tests/test_frame.py index 5912ccb1494fe..8fbceb95ae563 100644 --- a/pandas/tests/test_frame.py +++ b/pandas/tests/test_frame.py @@ -2395,22 +2395,26 @@ def test_construction_with_categorical_index(self): 'B' : ci.values }) idf = df.set_index('B') str(idf) - tm.assert_index_equal(idf.index,ci) + tm.assert_index_equal(idf.index, ci, check_names=False) + self.assertEqual(idf.index.name, 'B') # from a CategoricalIndex df = DataFrame({'A' : np.random.randn(10), 'B' : ci }) idf = df.set_index('B') str(idf) - tm.assert_index_equal(idf.index,ci) + tm.assert_index_equal(idf.index, ci, check_names=False) + self.assertEqual(idf.index.name, 'B') idf = df.set_index('B').reset_index().set_index('B') str(idf) - tm.assert_index_equal(idf.index,ci) + tm.assert_index_equal(idf.index, ci, check_names=False) + self.assertEqual(idf.index.name, 'B') new_df = idf.reset_index() new_df.index = df.B - tm.assert_index_equal(new_df.index,ci) + tm.assert_index_equal(new_df.index, ci, check_names=False) + self.assertEqual(idf.index.name, 'B') def test_set_index_cast_datetimeindex(self): df = DataFrame({'A': [datetime(2000, 1, 1) + timedelta(i) @@ -7488,19 +7492,19 @@ def test_drop_names(self): # errors = 'ignore' dropped = df.drop(['g'], errors='ignore') - expected = Index(['a', 'b', 'c']) + expected = Index(['a', 'b', 'c'], name='first') self.assert_index_equal(dropped.index, expected) dropped = df.drop(['b', 'g'], errors='ignore') - expected = Index(['a', 'c']) + expected = Index(['a', 'c'], name='first') self.assert_index_equal(dropped.index, expected) dropped = df.drop(['g'], axis=1, errors='ignore') - expected = Index(['d', 'e', 'f']) + expected = Index(['d', 'e', 'f'], name='second') self.assert_index_equal(dropped.columns, expected) dropped = df.drop(['d', 'g'], axis=1, errors='ignore') - expected = Index(['e', 'f']) + expected = Index(['e', 'f'], name='second') self.assert_index_equal(dropped.columns, expected) def test_dropEmptyRows(self): diff --git a/pandas/tests/test_groupby.py b/pandas/tests/test_groupby.py index c5a338520df21..2240c8457db42 100644 --- a/pandas/tests/test_groupby.py +++ b/pandas/tests/test_groupby.py @@ -297,9 +297,9 @@ def test_nth(self): # as it keeps the order in the series (and not the group order) # related GH 7287 expected = s.groupby(g,sort=False).first() - expected.index = range(1,10) - result = s.groupby(g).nth(0,dropna='all') - assert_series_equal(result,expected) + expected.index = pd.Index(range(1,10), name=0) + result = s.groupby(g).nth(0, dropna='all') + assert_series_equal(result, expected) # doc example df = DataFrame([[1, np.nan], [1, 4], [5, 6]], columns=['A', 'B']) @@ -807,9 +807,10 @@ def test_apply_issues(self): # GH 5789 # don't auto coerce dates df = pd.read_csv(StringIO(s), header=None, names=['date', 'time', 'value']) - expected = Series(['00:00','02:00','02:00'],index=['2011.05.16','2011.05.17','2011.05.18']) + exp_idx = pd.Index(['2011.05.16','2011.05.17','2011.05.18'], dtype=object, name='date') + expected = Series(['00:00','02:00','02:00'], index=exp_idx) result = df.groupby('date').apply(lambda x: x['time'][x['value'].idxmax()]) - assert_series_equal(result,expected) + assert_series_equal(result, expected) def test_len(self): df = tm.makeTimeDataFrame() @@ -1700,7 +1701,8 @@ def test_groupby_as_index_apply(self): # apply doesn't maintain the original ordering # changed in GH5610 as the as_index=False returns a MI here exp_not_as_apply = MultiIndex.from_tuples([(0, 0), (0, 2), (1, 1), (2, 4)]) - exp_as_apply = MultiIndex.from_tuples([(1, 0), (1, 2), (2, 1), (3, 4)]) + tp = [(1, 0), (1, 2), (2, 1), (3, 4)] + exp_as_apply = MultiIndex.from_tuples(tp, names=['user_id', None]) assert_index_equal(res_as_apply, exp_as_apply) assert_index_equal(res_not_as_apply, exp_not_as_apply) @@ -1922,6 +1924,8 @@ def _testit(op): for (cat1, cat2), group in grouped: expd.setdefault(cat1, {})[cat2] = op(group['C']) exp = DataFrame(expd).T.stack(dropna=False) + exp.index.names = ['A', 'B'] + result = op(grouped)['C'] assert_series_equal(result, exp) @@ -1974,7 +1978,7 @@ def test_cython_agg_nothing_to_agg_with_dates(self): def test_groupby_timedelta_cython_count(self): df = DataFrame({'g': list('ab' * 2), 'delt': np.arange(4).astype('timedelta64[ns]')}) - expected = Series([2, 2], index=['a', 'b'], name='delt') + expected = Series([2, 2], index=pd.Index(['a', 'b'], name='g'), name='delt') result = df.groupby('g').delt.count() tm.assert_series_equal(expected, result) @@ -2385,13 +2389,13 @@ def test_count_object(self): df = pd.DataFrame({'a': ['a'] * 3 + ['b'] * 3, 'c': [2] * 3 + [3] * 3}) result = df.groupby('c').a.count() - expected = pd.Series([3, 3], index=[2, 3], name='a') + expected = pd.Series([3, 3], index=pd.Index([2, 3], name='c'), name='a') tm.assert_series_equal(result, expected) df = pd.DataFrame({'a': ['a', np.nan, np.nan] + ['b'] * 3, 'c': [2] * 3 + [3] * 3}) result = df.groupby('c').a.count() - expected = pd.Series([1, 3], index=[2, 3], name='a') + expected = pd.Series([1, 3], index=pd.Index([2, 3], name='c'), name='a') tm.assert_series_equal(result, expected) def test_count_cross_type(self): # GH8169 diff --git a/pandas/tests/test_index.py b/pandas/tests/test_index.py index 3c9dbd2e48cb6..4156199f34851 100644 --- a/pandas/tests/test_index.py +++ b/pandas/tests/test_index.py @@ -2055,10 +2055,10 @@ def test_view(self): self.assertEqual(i_view.name, 'Foo') i_view = i.view('i8') - tm.assert_index_equal(i, Int64Index(i_view)) + tm.assert_index_equal(i, Int64Index(i_view, name='Foo')) i_view = i.view(Int64Index) - tm.assert_index_equal(i, Int64Index(i_view)) + tm.assert_index_equal(i, Int64Index(i_view, name='Foo')) def test_coerce_list(self): # coerce things diff --git a/pandas/tests/test_multilevel.py b/pandas/tests/test_multilevel.py index e6a0f5d7ef45d..b2efc20aa0694 100644 --- a/pandas/tests/test_multilevel.py +++ b/pandas/tests/test_multilevel.py @@ -426,8 +426,15 @@ def test_frame_setitem_multi_column(self): # it broadcasts df['B', '1'] = [1, 2, 3] df['A'] = df['B', '1'] - assert_series_equal(df['A', '1'], df['B', '1']) - assert_series_equal(df['A', '2'], df['B', '1']) + + sliced_a1 = df['A', '1'] + sliced_a2 = df['A', '2'] + sliced_b1 = df['B', '1'] + assert_series_equal(sliced_a1, sliced_b1, check_names=False) + assert_series_equal(sliced_a2, sliced_b1, check_names=False) + self.assertEqual(sliced_a1.name, ('A', '1')) + self.assertEqual(sliced_a2.name, ('A', '2')) + self.assertEqual(sliced_b1.name, ('B', '1')) def test_getitem_tuple_plus_slice(self): # GH #671 @@ -461,7 +468,9 @@ def test_getitem_multilevel_index_tuple_unsorted(self): df = df.set_index(index_columns) query_index = df.index[:1] rs = df.ix[query_index, "data"] - xp = Series(['x'], index=MultiIndex.from_tuples([(0, 1, 0)])) + + xp_idx = MultiIndex.from_tuples([(0, 1, 0)], names=['a', 'b', 'c']) + xp = Series(['x'], index=xp_idx, name='data') assert_series_equal(rs, xp) def test_xs(self): @@ -865,7 +874,7 @@ def test_count_level_series(self): def test_count_level_corner(self): s = self.frame['A'][:0] result = s.count(level=0) - expected = Series(0, index=s.index.levels[0]) + expected = Series(0, index=s.index.levels[0], name='A') assert_series_equal(result, expected) df = self.frame[:0] @@ -982,7 +991,9 @@ def test_stack_mixed_dtype(self): df = df.sortlevel(1, axis=1) stacked = df.stack() - assert_series_equal(stacked['foo'], df['foo'].stack()) + result = df['foo'].stack() + assert_series_equal(stacked['foo'], result, check_names=False) + self.assertIs(result.name, None) self.assertEqual(stacked['bar'].dtype, np.float_) def test_unstack_bug(self): @@ -1430,11 +1441,13 @@ def test_count(self): result = series.count(level='b') expect = self.series.count(level=1) - assert_series_equal(result, expect) + assert_series_equal(result, expect, check_names=False) + self.assertEqual(result.index.name, 'b') result = series.count(level='a') expect = self.series.count(level=0) - assert_series_equal(result, expect) + assert_series_equal(result, expect, check_names=False) + self.assertEqual(result.index.name, 'a') self.assertRaises(KeyError, series.count, 'x') self.assertRaises(KeyError, frame.count, level='x') @@ -1738,12 +1751,12 @@ def test_mixed_depth_get(self): result = df['a'] expected = df['a', '', ''] - assert_series_equal(result, expected) + assert_series_equal(result, expected, check_names=False) self.assertEqual(result.name, 'a') result = df['routine1', 'result1'] expected = df['routine1', 'result1', ''] - assert_series_equal(result, expected) + assert_series_equal(result, expected, check_names=False) self.assertEqual(result.name, ('routine1', 'result1')) def test_mixed_depth_insert(self): @@ -1825,7 +1838,7 @@ def test_mixed_depth_pop(self): df2 = df.copy() result = df1.pop('a') expected = df2.pop(('a', '', '')) - assert_series_equal(expected, result) + assert_series_equal(expected, result, check_names=False) assert_frame_equal(df1, df2) self.assertEqual(result.name, 'a') diff --git a/pandas/tests/test_panel.py b/pandas/tests/test_panel.py index a405fa78b2518..236bdc8a98ff4 100644 --- a/pandas/tests/test_panel.py +++ b/pandas/tests/test_panel.py @@ -509,7 +509,9 @@ def test_major_xs(self): idx = self.panel.major_axis[5] xs = self.panel.major_xs(idx) - assert_series_equal(xs['ItemA'], ref.xs(idx)) + result = xs['ItemA'] + assert_series_equal(result, ref.xs(idx), check_names=False) + self.assertEqual(result.name, 'ItemA') # not contained idx = self.panel.major_axis[0] - bday @@ -527,7 +529,7 @@ def test_minor_xs(self): idx = self.panel.minor_axis[1] xs = self.panel.minor_xs(idx) - assert_series_equal(xs['ItemA'], ref[idx]) + assert_series_equal(xs['ItemA'], ref[idx], check_names=False) # not contained self.assertRaises(Exception, self.panel.minor_xs, 'E') @@ -658,7 +660,7 @@ def test_ix_setitem_slice_dataframe(self): def test_ix_align(self): from pandas import Series - b = Series(np.random.randn(10)) + b = Series(np.random.randn(10), name=0) b.sort() df_orig = Panel(np.random.randn(3, 10, 2)) df = df_orig.copy() diff --git a/pandas/tseries/tests/test_base.py b/pandas/tseries/tests/test_base.py index c42802bdb31ad..7389c91e4199b 100644 --- a/pandas/tseries/tests/test_base.py +++ b/pandas/tseries/tests/test_base.py @@ -483,8 +483,8 @@ def test_ops_compat(self): tm.assert_index_equal(result,expected) # divide with nats - rng = TimedeltaIndex(['1 days',pd.NaT,'2 days'],name='foo') - expected = Float64Index([12,np.nan,24]) + rng = TimedeltaIndex(['1 days', pd.NaT, '2 days'], name='foo') + expected = Float64Index([12, np.nan, 24], name='foo') for offset in offsets: result = rng / offset tm.assert_index_equal(result,expected) @@ -495,8 +495,8 @@ def test_ops_compat(self): def test_subtraction_ops(self): # with datetimes/timedelta and tdi/dti - tdi = TimedeltaIndex(['1 days',pd.NaT,'2 days'],name='foo') - dti = date_range('20130101',periods=3) + tdi = TimedeltaIndex(['1 days', pd.NaT, '2 days'], name='foo') + dti = date_range('20130101', periods=3, name='bar') td = Timedelta('1 days') dt = Timestamp('20130101') @@ -505,29 +505,29 @@ def test_subtraction_ops(self): self.assertRaises(TypeError, lambda : td - dt) self.assertRaises(TypeError, lambda : td - dti) - result = dt-dti - expected = TimedeltaIndex(['0 days','-1 days','-2 days']) - tm.assert_index_equal(result,expected) + result = dt - dti + expected = TimedeltaIndex(['0 days', '-1 days', '-2 days'], name='bar') + tm.assert_index_equal(result, expected) - result = dti-dt - expected = TimedeltaIndex(['0 days','1 days','2 days']) - tm.assert_index_equal(result,expected) + result = dti - dt + expected = TimedeltaIndex(['0 days', '1 days', '2 days'], name='bar') + tm.assert_index_equal(result, expected) - result = tdi-td - expected = TimedeltaIndex(['0 days',pd.NaT,'1 days']) - tm.assert_index_equal(result,expected) + result = tdi - td + expected = TimedeltaIndex(['0 days', pd.NaT, '1 days'], name='foo') + tm.assert_index_equal(result, expected, check_names=False) - result = td-tdi - expected = TimedeltaIndex(['0 days',pd.NaT,'-1 days']) - tm.assert_index_equal(result,expected) + result = td - tdi + expected = TimedeltaIndex(['0 days', pd.NaT, '-1 days'], name='foo') + tm.assert_index_equal(result, expected, check_names=False) - result = dti-td - expected = DatetimeIndex(['20121231','20130101','20130102']) - tm.assert_index_equal(result,expected) + result = dti - td + expected = DatetimeIndex(['20121231', '20130101', '20130102'], name='bar') + tm.assert_index_equal(result, expected, check_names=False) - result = dt-tdi - expected = DatetimeIndex(['20121231',pd.NaT,'20121230']) - tm.assert_index_equal(result,expected) + result = dt - tdi + expected = DatetimeIndex(['20121231', pd.NaT, '20121230'], name='foo') + tm.assert_index_equal(result, expected) def test_subtraction_ops_with_tz(self): @@ -644,46 +644,46 @@ def test_dti_dti_deprecated_ops(self): def test_dti_tdi_numeric_ops(self): # These are normally union/diff set-like ops - tdi = TimedeltaIndex(['1 days',pd.NaT,'2 days'],name='foo') - dti = date_range('20130101',periods=3) + tdi = TimedeltaIndex(['1 days',pd.NaT,'2 days'], name='foo') + dti = date_range('20130101',periods=3, name='bar') td = Timedelta('1 days') dt = Timestamp('20130101') - result = tdi-tdi - expected = TimedeltaIndex(['0 days',pd.NaT,'0 days']) - tm.assert_index_equal(result,expected) + result = tdi - tdi + expected = TimedeltaIndex(['0 days', pd.NaT, '0 days'], name='foo') + tm.assert_index_equal(result, expected, check_names=False) # must be foo - result = tdi+tdi - expected = TimedeltaIndex(['2 days',pd.NaT,'4 days']) - tm.assert_index_equal(result,expected) + result = tdi + tdi + expected = TimedeltaIndex(['2 days', pd.NaT, '4 days'], name='foo') + tm.assert_index_equal(result, expected, check_names=False) # must be foo - result = dti-tdi - expected = DatetimeIndex(['20121231',pd.NaT,'20130101']) - tm.assert_index_equal(result,expected) + result = dti - tdi + expected = DatetimeIndex(['20121231', pd.NaT, '20130101']) + tm.assert_index_equal(result, expected) def test_addition_ops(self): # with datetimes/timedelta and tdi/dti - tdi = TimedeltaIndex(['1 days',pd.NaT,'2 days'],name='foo') - dti = date_range('20130101',periods=3) + tdi = TimedeltaIndex(['1 days',pd.NaT,'2 days'], name='foo') + dti = date_range('20130101', periods=3, name='bar') td = Timedelta('1 days') dt = Timestamp('20130101') result = tdi + dt - expected = DatetimeIndex(['20130102',pd.NaT,'20130103']) - tm.assert_index_equal(result,expected) + expected = DatetimeIndex(['20130102', pd.NaT, '20130103'], name='foo') + tm.assert_index_equal(result, expected) result = dt + tdi - expected = DatetimeIndex(['20130102',pd.NaT,'20130103']) - tm.assert_index_equal(result,expected) + expected = DatetimeIndex(['20130102', pd.NaT, '20130103'], name='foo') + tm.assert_index_equal(result, expected) result = td + tdi - expected = TimedeltaIndex(['2 days',pd.NaT,'3 days']) - tm.assert_index_equal(result,expected) + expected = TimedeltaIndex(['2 days', pd.NaT, '3 days'], name='foo') + tm.assert_index_equal(result, expected, check_names=False) # must be foo result = tdi + td - expected = TimedeltaIndex(['2 days',pd.NaT,'3 days']) - tm.assert_index_equal(result,expected) + expected = TimedeltaIndex(['2 days', pd.NaT, '3 days'], name='foo') + tm.assert_index_equal(result,expected, check_names=False) # must be foo # unequal length self.assertRaises(ValueError, lambda : tdi + dti[0:1]) @@ -696,7 +696,7 @@ def test_addition_ops(self): #self.assertRaises(TypeError, lambda : Int64Index([1,2,3]) + tdi) result = tdi + dti - expected = DatetimeIndex(['20130102',pd.NaT,'20130105']) + expected = DatetimeIndex(['20130102', pd.NaT, '20130105']) tm.assert_index_equal(result,expected) result = dti + tdi diff --git a/pandas/tseries/tests/test_resample.py b/pandas/tseries/tests/test_resample.py index 2ae311e044a75..c1f5854b6b2b5 100644 --- a/pandas/tseries/tests/test_resample.py +++ b/pandas/tseries/tests/test_resample.py @@ -82,15 +82,17 @@ def test_resample_basic(self): name='index') s = Series(np.random.randn(14), index=rng) result = s.resample('5min', how='mean', closed='right', label='right') + + exp_idx = date_range('1/1/2000', periods=4, freq='5min', name='index') expected = Series([s[0], s[1:6].mean(), s[6:11].mean(), s[11:].mean()], - index=date_range('1/1/2000', periods=4, freq='5min')) + index=exp_idx) assert_series_equal(result, expected) self.assertEqual(result.index.name, 'index') result = s.resample('5min', how='mean', closed='left', label='right') - expected = Series([s[:5].mean(), s[5:10].mean(), s[10:].mean()], - index=date_range('1/1/2000 00:05', periods=3, - freq='5min')) + + exp_idx = date_range('1/1/2000 00:05', periods=3, freq='5min', name='index') + expected = Series([s[:5].mean(), s[5:10].mean(), s[10:].mean()], index=exp_idx) assert_series_equal(result, expected) s = self.series @@ -115,7 +117,7 @@ def _ohlc(group): if isnull(group).all(): return np.repeat(np.nan, 4) return [group[0], group.max(), group.min(), group[-1]] - inds = date_range('1/1/2000', periods=4, freq='5min') + inds = date_range('1/1/2000', periods=4, freq='5min', name='index') for arg in args: if arg == 'ohlc': diff --git a/pandas/util/testing.py b/pandas/util/testing.py index ea7354a9334ff..5c50b952f8109 100644 --- a/pandas/util/testing.py +++ b/pandas/util/testing.py @@ -533,7 +533,7 @@ def assert_equal(a, b, msg=""): assert a == b, "%s: %r != %r" % (msg.format(a,b), a, b) -def assert_index_equal(left, right, exact=False): +def assert_index_equal(left, right, exact=False, check_names=True): assert_isinstance(left, Index, '[index] ') assert_isinstance(right, Index, '[index] ') if not left.equals(right) or (exact and type(left) != type(right)): @@ -541,6 +541,10 @@ def assert_index_equal(left, right, exact=False): left, right, right.dtype)) + if check_names: + assert_attr_equal('names', left, right) + + def assert_attr_equal(attr, left, right): """checks attributes are equal. Both objects must have attribute.""" left_attr = getattr(left, attr) @@ -663,7 +667,8 @@ def assert_series_equal(left, right, check_dtype=True, check_index_type=False, check_series_type=False, check_less_precise=False, - check_exact=False): + check_exact=False, + check_names=True): if check_series_type: assert_isinstance(left, type(right)) if check_dtype: @@ -678,7 +683,7 @@ def assert_series_equal(left, right, check_dtype=True, assert_almost_equal( left.index.values, right.index.values, check_less_precise) else: - assert_index_equal(left.index, right.index) + assert_index_equal(left.index, right.index, check_names=check_names) if check_index_type: for level in range(left.index.nlevels): lindex = left.index.get_level_values(level) @@ -687,6 +692,7 @@ def assert_series_equal(left, right, check_dtype=True, assert_attr_equal('dtype', lindex, rindex) assert_attr_equal('inferred_type', lindex, rindex) + # This could be refactored to use the NDFrame.equals method def assert_frame_equal(left, right, check_dtype=True, check_index_type=False, @@ -707,8 +713,7 @@ def assert_frame_equal(left, right, check_dtype=True, assert_almost_equal(left.index, right.index) else: if not by_blocks: - assert_index_equal(left.columns, right.columns) - assert_index_equal(left.index, right.index) + assert_index_equal(left.columns, right.columns, check_names=check_names) # compare by blocks if by_blocks: @@ -717,7 +722,7 @@ def assert_frame_equal(left, right, check_dtype=True, for dtype in list(set(list(lblocks.keys()) + list(rblocks.keys()))): assert dtype in lblocks assert dtype in rblocks - assert_frame_equal(lblocks[dtype],rblocks[dtype],check_dtype=check_dtype) + assert_frame_equal(lblocks[dtype],rblocks[dtype], check_dtype=check_dtype) # compare by columns else: @@ -729,7 +734,8 @@ def assert_frame_equal(left, right, check_dtype=True, check_dtype=check_dtype, check_index_type=check_index_type, check_less_precise=check_less_precise, - check_exact=check_exact) + check_exact=check_exact, + check_names=check_names) if check_index_type: for level in range(left.index.nlevels): @@ -750,14 +756,15 @@ def assert_frame_equal(left, right, check_dtype=True, def assert_panelnd_equal(left, right, check_panel_type=False, check_less_precise=False, - assert_func=assert_frame_equal): + assert_func=assert_frame_equal, + check_names=False): if check_panel_type: assert_isinstance(left, type(right)) for axis in ['items', 'major_axis', 'minor_axis']: left_ind = getattr(left, axis) right_ind = getattr(right, axis) - assert_index_equal(left_ind, right_ind) + assert_index_equal(left_ind, right_ind, check_names=check_names) for i, item in enumerate(left._get_axis(0)): assert item in right, "non-matching item (right) '%s'" % item