From 4aea4edf7dc916c4eb1ec454c507addcd1be07fd Mon Sep 17 00:00:00 2001 From: dahlbaek <30782351+dahlbaek@users.noreply.github.com> Date: Fri, 20 Jul 2018 15:17:02 +0200 Subject: [PATCH] TST: tuple and namedtuple multiindex tests for read_csv --- pandas/tests/io/parser/header.py | 50 ++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/pandas/tests/io/parser/header.py b/pandas/tests/io/parser/header.py index 3fb0650348763..ad3d4592bd599 100644 --- a/pandas/tests/io/parser/header.py +++ b/pandas/tests/io/parser/header.py @@ -5,6 +5,8 @@ during parsing for all of the parsers defined in parsers.py """ +from collections import namedtuple + import pytest import numpy as np @@ -149,6 +151,22 @@ def test_header_multiindex_common_format(self): result = self.read_csv(StringIO(data), header=[0, 1], index_col=0) tm.assert_frame_equal(df, result) + # to_csv, tuples + result = self.read_csv(StringIO(data), skiprows=3, + names=[('a', 'q'), ('a', 'r'), ('a', 's'), + ('b', 't'), ('c', 'u'), ('c', 'v')], + index_col=0) + tm.assert_frame_equal(df, result) + + # to_csv, namedtuples + TestTuple = namedtuple('names', ['first', 'second']) + result = self.read_csv( + StringIO(data), skiprows=3, index_col=0, + names=[TestTuple('a', 'q'), TestTuple('a', 'r'), + TestTuple('a', 's'), TestTuple('b', 't'), + TestTuple('c', 'u'), TestTuple('c', 'v')]) + tm.assert_frame_equal(df, result) + # common data = """,a,a,a,b,c,c ,q,r,s,t,u,v @@ -158,6 +176,22 @@ def test_header_multiindex_common_format(self): result = self.read_csv(StringIO(data), header=[0, 1], index_col=0) tm.assert_frame_equal(df, result) + # common, tuples + result = self.read_csv(StringIO(data), skiprows=2, + names=[('a', 'q'), ('a', 'r'), ('a', 's'), + ('b', 't'), ('c', 'u'), ('c', 'v')], + index_col=0) + tm.assert_frame_equal(df, result) + + # common, namedtuples + TestTuple = namedtuple('names', ['first', 'second']) + result = self.read_csv( + StringIO(data), skiprows=2, index_col=0, + names=[TestTuple('a', 'q'), TestTuple('a', 'r'), + TestTuple('a', 's'), TestTuple('b', 't'), + TestTuple('c', 'u'), TestTuple('c', 'v')]) + tm.assert_frame_equal(df, result) + # common, no index_col data = """a,a,a,b,c,c q,r,s,t,u,v @@ -167,6 +201,22 @@ def test_header_multiindex_common_format(self): result = self.read_csv(StringIO(data), header=[0, 1], index_col=None) tm.assert_frame_equal(df.reset_index(drop=True), result) + # common, no index_col, tuples + result = self.read_csv(StringIO(data), skiprows=2, + names=[('a', 'q'), ('a', 'r'), ('a', 's'), + ('b', 't'), ('c', 'u'), ('c', 'v')], + index_col=None) + tm.assert_frame_equal(df.reset_index(drop=True), result) + + # common, no index_col, namedtuples + TestTuple = namedtuple('names', ['first', 'second']) + result = self.read_csv( + StringIO(data), skiprows=2, index_col=None, + names=[TestTuple('a', 'q'), TestTuple('a', 'r'), + TestTuple('a', 's'), TestTuple('b', 't'), + TestTuple('c', 'u'), TestTuple('c', 'v')]) + tm.assert_frame_equal(df.reset_index(drop=True), result) + # malformed case 1 expected = DataFrame(np.array( [[2, 3, 4, 5, 6], [8, 9, 10, 11, 12]], dtype='int64'),