Skip to content

Commit 686a4b6

Browse files
dahlbaekvictor
authored and
victor
committed
TST: tuple and namedtuple multiindex tests for read_csv (pandas-dev#21994)
1 parent 3cd1b7d commit 686a4b6

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

pandas/tests/io/parser/header.py

+50
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
during parsing for all of the parsers defined in parsers.py
66
"""
77

8+
from collections import namedtuple
9+
810
import pytest
911

1012
import numpy as np
@@ -149,6 +151,22 @@ def test_header_multiindex_common_format(self):
149151
result = self.read_csv(StringIO(data), header=[0, 1], index_col=0)
150152
tm.assert_frame_equal(df, result)
151153

154+
# to_csv, tuples
155+
result = self.read_csv(StringIO(data), skiprows=3,
156+
names=[('a', 'q'), ('a', 'r'), ('a', 's'),
157+
('b', 't'), ('c', 'u'), ('c', 'v')],
158+
index_col=0)
159+
tm.assert_frame_equal(df, result)
160+
161+
# to_csv, namedtuples
162+
TestTuple = namedtuple('names', ['first', 'second'])
163+
result = self.read_csv(
164+
StringIO(data), skiprows=3, index_col=0,
165+
names=[TestTuple('a', 'q'), TestTuple('a', 'r'),
166+
TestTuple('a', 's'), TestTuple('b', 't'),
167+
TestTuple('c', 'u'), TestTuple('c', 'v')])
168+
tm.assert_frame_equal(df, result)
169+
152170
# common
153171
data = """,a,a,a,b,c,c
154172
,q,r,s,t,u,v
@@ -158,6 +176,22 @@ def test_header_multiindex_common_format(self):
158176
result = self.read_csv(StringIO(data), header=[0, 1], index_col=0)
159177
tm.assert_frame_equal(df, result)
160178

179+
# common, tuples
180+
result = self.read_csv(StringIO(data), skiprows=2,
181+
names=[('a', 'q'), ('a', 'r'), ('a', 's'),
182+
('b', 't'), ('c', 'u'), ('c', 'v')],
183+
index_col=0)
184+
tm.assert_frame_equal(df, result)
185+
186+
# common, namedtuples
187+
TestTuple = namedtuple('names', ['first', 'second'])
188+
result = self.read_csv(
189+
StringIO(data), skiprows=2, index_col=0,
190+
names=[TestTuple('a', 'q'), TestTuple('a', 'r'),
191+
TestTuple('a', 's'), TestTuple('b', 't'),
192+
TestTuple('c', 'u'), TestTuple('c', 'v')])
193+
tm.assert_frame_equal(df, result)
194+
161195
# common, no index_col
162196
data = """a,a,a,b,c,c
163197
q,r,s,t,u,v
@@ -167,6 +201,22 @@ def test_header_multiindex_common_format(self):
167201
result = self.read_csv(StringIO(data), header=[0, 1], index_col=None)
168202
tm.assert_frame_equal(df.reset_index(drop=True), result)
169203

204+
# common, no index_col, tuples
205+
result = self.read_csv(StringIO(data), skiprows=2,
206+
names=[('a', 'q'), ('a', 'r'), ('a', 's'),
207+
('b', 't'), ('c', 'u'), ('c', 'v')],
208+
index_col=None)
209+
tm.assert_frame_equal(df.reset_index(drop=True), result)
210+
211+
# common, no index_col, namedtuples
212+
TestTuple = namedtuple('names', ['first', 'second'])
213+
result = self.read_csv(
214+
StringIO(data), skiprows=2, index_col=None,
215+
names=[TestTuple('a', 'q'), TestTuple('a', 'r'),
216+
TestTuple('a', 's'), TestTuple('b', 't'),
217+
TestTuple('c', 'u'), TestTuple('c', 'v')])
218+
tm.assert_frame_equal(df.reset_index(drop=True), result)
219+
170220
# malformed case 1
171221
expected = DataFrame(np.array(
172222
[[2, 3, 4, 5, 6], [8, 9, 10, 11, 12]], dtype='int64'),

0 commit comments

Comments
 (0)