Skip to content

Commit 71acf00

Browse files
committed
REF: reorganize test_series.py into pandas/tests/series subpackage
1 parent 1330b9f commit 71acf00

17 files changed

+8912
-8649
lines changed

pandas/tests/series/__init__.py

Whitespace-only changes.

pandas/tests/series/common.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from pandas.util.decorators import cache_readonly
2+
import pandas.util.testing as tm
3+
import pandas as pd
4+
5+
_ts = tm.makeTimeSeries()
6+
7+
8+
class TestData(object):
9+
10+
@cache_readonly
11+
def ts(self):
12+
ts = _ts.copy()
13+
ts.name = 'ts'
14+
return ts
15+
16+
@cache_readonly
17+
def series(self):
18+
series = tm.makeStringSeries()
19+
series.name = 'series'
20+
return series
21+
22+
@cache_readonly
23+
def objSeries(self):
24+
objSeries = tm.makeObjectSeries()
25+
objSeries.name = 'objects'
26+
return objSeries
27+
28+
@cache_readonly
29+
def empty(self):
30+
return pd.Series([], index=[])
+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# coding=utf-8
2+
# pylint: disable-msg=E1101,W0612
3+
4+
import numpy as np
5+
import pandas as pd
6+
7+
from pandas import Index, Series
8+
from pandas.core.index import MultiIndex, RangeIndex
9+
10+
from pandas.compat import lrange, range, zip
11+
from pandas.util.testing import assert_series_equal, assert_frame_equal
12+
import pandas.util.testing as tm
13+
14+
from .common import TestData
15+
16+
17+
class TestSeriesAlterAxes(TestData, tm.TestCase):
18+
19+
_multiprocess_can_split_ = True
20+
21+
def test_setindex(self):
22+
# wrong type
23+
series = self.series.copy()
24+
self.assertRaises(TypeError, setattr, series, 'index', None)
25+
26+
# wrong length
27+
series = self.series.copy()
28+
self.assertRaises(Exception, setattr, series, 'index',
29+
np.arange(len(series) - 1))
30+
31+
# works
32+
series = self.series.copy()
33+
series.index = np.arange(len(series))
34+
tm.assertIsInstance(series.index, Index)
35+
36+
def test_rename(self):
37+
renamer = lambda x: x.strftime('%Y%m%d')
38+
renamed = self.ts.rename(renamer)
39+
self.assertEqual(renamed.index[0], renamer(self.ts.index[0]))
40+
41+
# dict
42+
rename_dict = dict(zip(self.ts.index, renamed.index))
43+
renamed2 = self.ts.rename(rename_dict)
44+
assert_series_equal(renamed, renamed2)
45+
46+
# partial dict
47+
s = Series(np.arange(4), index=['a', 'b', 'c', 'd'], dtype='int64')
48+
renamed = s.rename({'b': 'foo', 'd': 'bar'})
49+
self.assert_numpy_array_equal(renamed.index, ['a', 'foo', 'c', 'bar'])
50+
51+
# index with name
52+
renamer = Series(np.arange(4),
53+
index=Index(['a', 'b', 'c', 'd'], name='name'),
54+
dtype='int64')
55+
renamed = renamer.rename({})
56+
self.assertEqual(renamed.index.name, renamer.index.name)
57+
58+
def test_rename_inplace(self):
59+
renamer = lambda x: x.strftime('%Y%m%d')
60+
expected = renamer(self.ts.index[0])
61+
62+
self.ts.rename(renamer, inplace=True)
63+
self.assertEqual(self.ts.index[0], expected)
64+
65+
def test_set_index_makes_timeseries(self):
66+
idx = tm.makeDateIndex(10)
67+
68+
s = Series(lrange(10))
69+
s.index = idx
70+
71+
with tm.assert_produces_warning(FutureWarning):
72+
self.assertTrue(s.is_time_series)
73+
self.assertTrue(s.index.is_all_dates)
74+
75+
def test_reset_index(self):
76+
df = tm.makeDataFrame()[:5]
77+
ser = df.stack()
78+
ser.index.names = ['hash', 'category']
79+
80+
ser.name = 'value'
81+
df = ser.reset_index()
82+
self.assertIn('value', df)
83+
84+
df = ser.reset_index(name='value2')
85+
self.assertIn('value2', df)
86+
87+
# check inplace
88+
s = ser.reset_index(drop=True)
89+
s2 = ser
90+
s2.reset_index(drop=True, inplace=True)
91+
assert_series_equal(s, s2)
92+
93+
# level
94+
index = MultiIndex(levels=[['bar'], ['one', 'two', 'three'], [0, 1]],
95+
labels=[[0, 0, 0, 0, 0, 0], [0, 1, 2, 0, 1, 2],
96+
[0, 1, 0, 1, 0, 1]])
97+
s = Series(np.random.randn(6), index=index)
98+
rs = s.reset_index(level=1)
99+
self.assertEqual(len(rs.columns), 2)
100+
101+
rs = s.reset_index(level=[0, 2], drop=True)
102+
self.assertTrue(rs.index.equals(Index(index.get_level_values(1))))
103+
tm.assertIsInstance(rs, Series)
104+
105+
def test_reset_index_range(self):
106+
# GH 12071
107+
s = pd.Series(range(2), name='A', dtype='int64')
108+
series_result = s.reset_index()
109+
tm.assertIsInstance(series_result.index, RangeIndex)
110+
series_expected = pd.DataFrame([[0, 0], [1, 1]],
111+
columns=['index', 'A'],
112+
index=RangeIndex(stop=2))
113+
assert_frame_equal(series_result, series_expected)
114+
115+
def test_reorder_levels(self):
116+
index = MultiIndex(levels=[['bar'], ['one', 'two', 'three'], [0, 1]],
117+
labels=[[0, 0, 0, 0, 0, 0], [0, 1, 2, 0, 1, 2],
118+
[0, 1, 0, 1, 0, 1]],
119+
names=['L0', 'L1', 'L2'])
120+
s = Series(np.arange(6), index=index)
121+
122+
# no change, position
123+
result = s.reorder_levels([0, 1, 2])
124+
assert_series_equal(s, result)
125+
126+
# no change, labels
127+
result = s.reorder_levels(['L0', 'L1', 'L2'])
128+
assert_series_equal(s, result)
129+
130+
# rotate, position
131+
result = s.reorder_levels([1, 2, 0])
132+
e_idx = MultiIndex(levels=[['one', 'two', 'three'], [0, 1], ['bar']],
133+
labels=[[0, 1, 2, 0, 1, 2], [0, 1, 0, 1, 0, 1],
134+
[0, 0, 0, 0, 0, 0]],
135+
names=['L1', 'L2', 'L0'])
136+
expected = Series(np.arange(6), index=e_idx)
137+
assert_series_equal(result, expected)
138+
139+
result = s.reorder_levels([0, 0, 0])
140+
e_idx = MultiIndex(levels=[['bar'], ['bar'], ['bar']],
141+
labels=[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0],
142+
[0, 0, 0, 0, 0, 0]],
143+
names=['L0', 'L0', 'L0'])
144+
expected = Series(range(6), index=e_idx)
145+
assert_series_equal(result, expected)
146+
147+
result = s.reorder_levels(['L0', 'L0', 'L0'])
148+
assert_series_equal(result, expected)

0 commit comments

Comments
 (0)