Skip to content

Commit 550642b

Browse files
h-vetinarivictor
authored and
victor
committed
TST/CLN: break up & parametrize tests for df.set_index (pandas-dev#22236)
1 parent 8ef7024 commit 550642b

File tree

2 files changed

+632
-409
lines changed

2 files changed

+632
-409
lines changed

pandas/tests/frame/conftest.py

+191
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
import pytest
2+
3+
import numpy as np
4+
5+
from pandas import compat
6+
import pandas.util.testing as tm
7+
from pandas import DataFrame, date_range, NaT
8+
9+
10+
@pytest.fixture
11+
def float_frame():
12+
"""
13+
Fixture for DataFrame of floats with index of unique strings
14+
15+
Columns are ['A', 'B', 'C', 'D'].
16+
"""
17+
return DataFrame(tm.getSeriesData())
18+
19+
20+
@pytest.fixture
21+
def float_frame2():
22+
"""
23+
Fixture for DataFrame of floats with index of unique strings
24+
25+
Columns are ['D', 'C', 'B', 'A']
26+
"""
27+
return DataFrame(tm.getSeriesData(), columns=['D', 'C', 'B', 'A'])
28+
29+
30+
@pytest.fixture
31+
def int_frame():
32+
"""
33+
Fixture for DataFrame of ints with index of unique strings
34+
35+
Columns are ['A', 'B', 'C', 'D']
36+
"""
37+
df = DataFrame({k: v.astype(int)
38+
for k, v in compat.iteritems(tm.getSeriesData())})
39+
# force these all to int64 to avoid platform testing issues
40+
return DataFrame({c: s for c, s in compat.iteritems(df)}, dtype=np.int64)
41+
42+
43+
@pytest.fixture
44+
def datetime_frame():
45+
"""
46+
Fixture for DataFrame of floats with DatetimeIndex
47+
48+
Columns are ['A', 'B', 'C', 'D']
49+
"""
50+
return DataFrame(tm.getTimeSeriesData())
51+
52+
53+
@pytest.fixture
54+
def float_string_frame():
55+
"""
56+
Fixture for DataFrame of floats and strings with index of unique strings
57+
58+
Columns are ['A', 'B', 'C', 'D', 'foo'].
59+
"""
60+
df = DataFrame(tm.getSeriesData())
61+
df['foo'] = 'bar'
62+
return df
63+
64+
65+
@pytest.fixture
66+
def mixed_float_frame():
67+
"""
68+
Fixture for DataFrame of different float types with index of unique strings
69+
70+
Columns are ['A', 'B', 'C', 'D'].
71+
"""
72+
df = DataFrame(tm.getSeriesData())
73+
df.A = df.A.astype('float16')
74+
df.B = df.B.astype('float32')
75+
df.C = df.C.astype('float64')
76+
return df
77+
78+
79+
@pytest.fixture
80+
def mixed_float_frame2():
81+
"""
82+
Fixture for DataFrame of different float types with index of unique strings
83+
84+
Columns are ['A', 'B', 'C', 'D'].
85+
"""
86+
df = DataFrame(tm.getSeriesData())
87+
df.D = df.D.astype('float16')
88+
df.C = df.C.astype('float32')
89+
df.B = df.B.astype('float64')
90+
return df
91+
92+
93+
@pytest.fixture
94+
def mixed_int_frame():
95+
"""
96+
Fixture for DataFrame of different int types with index of unique strings
97+
98+
Columns are ['A', 'B', 'C', 'D'].
99+
"""
100+
df = DataFrame({k: v.astype(int)
101+
for k, v in compat.iteritems(tm.getSeriesData())})
102+
df.A = df.A.astype('uint8')
103+
df.B = df.B.astype('int32')
104+
df.C = df.C.astype('int64')
105+
df.D = np.ones(len(df.D), dtype='uint64')
106+
return df
107+
108+
109+
@pytest.fixture
110+
def mixed_type_frame():
111+
"""
112+
Fixture for DataFrame of float/int/string columns with RangeIndex
113+
114+
Columns are ['a', 'b', 'c', 'float32', 'int32'].
115+
"""
116+
return DataFrame({'a': 1., 'b': 2, 'c': 'foo',
117+
'float32': np.array([1.] * 10, dtype='float32'),
118+
'int32': np.array([1] * 10, dtype='int32')},
119+
index=np.arange(10))
120+
121+
122+
@pytest.fixture
123+
def timezone_frame():
124+
"""
125+
Fixture for DataFrame of date_range Series with different time zones
126+
127+
Columns are ['A', 'B', 'C']; some entries are missing
128+
"""
129+
df = DataFrame({'A': date_range('20130101', periods=3),
130+
'B': date_range('20130101', periods=3,
131+
tz='US/Eastern'),
132+
'C': date_range('20130101', periods=3,
133+
tz='CET')})
134+
df.iloc[1, 1] = NaT
135+
df.iloc[1, 2] = NaT
136+
return df
137+
138+
139+
@pytest.fixture
140+
def empty_frame():
141+
"""
142+
Fixture for empty DataFrame
143+
"""
144+
return DataFrame({})
145+
146+
147+
@pytest.fixture
148+
def datetime_series():
149+
"""
150+
Fixture for Series of floats with DatetimeIndex
151+
"""
152+
return tm.makeTimeSeries(nper=30)
153+
154+
155+
@pytest.fixture
156+
def datetime_series_short():
157+
"""
158+
Fixture for Series of floats with DatetimeIndex
159+
"""
160+
return tm.makeTimeSeries(nper=30)[5:]
161+
162+
163+
@pytest.fixture
164+
def simple_frame():
165+
"""
166+
Fixture for simple 3x3 DataFrame
167+
168+
Columns are ['one', 'two', 'three'], index is ['a', 'b', 'c'].
169+
"""
170+
arr = np.array([[1., 2., 3.],
171+
[4., 5., 6.],
172+
[7., 8., 9.]])
173+
174+
return DataFrame(arr, columns=['one', 'two', 'three'],
175+
index=['a', 'b', 'c'])
176+
177+
178+
@pytest.fixture
179+
def frame_of_index_cols():
180+
"""
181+
Fixture for DataFrame of columns that can be used for indexing
182+
183+
Columns are ['A', 'B', 'C', 'D', 'E']; 'A' & 'B' contain duplicates (but
184+
are jointly unique), the rest are unique.
185+
"""
186+
df = DataFrame({'A': ['foo', 'foo', 'foo', 'bar', 'bar'],
187+
'B': ['one', 'two', 'three', 'one', 'two'],
188+
'C': ['a', 'b', 'c', 'd', 'e'],
189+
'D': np.random.randn(5),
190+
'E': np.random.randn(5)})
191+
return df

0 commit comments

Comments
 (0)