5
5
during parsing for all of the parsers defined in parsers.py
6
6
"""
7
7
8
+ from collections import namedtuple
9
+
8
10
import pytest
9
11
10
12
import numpy as np
@@ -149,6 +151,22 @@ def test_header_multiindex_common_format(self):
149
151
result = self .read_csv (StringIO (data ), header = [0 , 1 ], index_col = 0 )
150
152
tm .assert_frame_equal (df , result )
151
153
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
+
152
170
# common
153
171
data = """,a,a,a,b,c,c
154
172
,q,r,s,t,u,v
@@ -158,6 +176,22 @@ def test_header_multiindex_common_format(self):
158
176
result = self .read_csv (StringIO (data ), header = [0 , 1 ], index_col = 0 )
159
177
tm .assert_frame_equal (df , result )
160
178
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
+
161
195
# common, no index_col
162
196
data = """a,a,a,b,c,c
163
197
q,r,s,t,u,v
@@ -167,6 +201,22 @@ def test_header_multiindex_common_format(self):
167
201
result = self .read_csv (StringIO (data ), header = [0 , 1 ], index_col = None )
168
202
tm .assert_frame_equal (df .reset_index (drop = True ), result )
169
203
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
+
170
220
# malformed case 1
171
221
expected = DataFrame (np .array (
172
222
[[2 , 3 , 4 , 5 , 6 ], [8 , 9 , 10 , 11 , 12 ]], dtype = 'int64' ),
0 commit comments