Skip to content

Commit

Permalink
fix multiindex column parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
Ben Kandel committed Nov 22, 2016
1 parent 518982d commit fedfff8
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
6 changes: 4 additions & 2 deletions pandas/io/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -1509,10 +1509,10 @@ def read(self, nrows=None):
if self._first_chunk:
self._first_chunk = False
names = self._maybe_dedup_names(self.orig_names)

index, columns, col_dict = _get_empty_meta(
names, self.index_col, self.index_names,
dtype=self.kwds.get('dtype'))
columns = self._maybe_make_multi_index_columns(columns, self.col_names)

if self.usecols is not None:
columns = self._filter_usecols(columns)
Expand Down Expand Up @@ -1979,8 +1979,10 @@ def read(self, rows=None):
if not len(content): # pragma: no cover
# DataFrame with the right metadata, even though it's length 0
names = self._maybe_dedup_names(self.orig_names)
return _get_empty_meta(names, self.index_col,
index, columns, col_dict = _get_empty_meta(names, self.index_col,
self.index_names)
columns = self._maybe_make_multi_index_columns(columns, self.col_names)
return index, columns, col_dict

# handle new style for names in index
count_empty_content_vals = count_empty_vals(content[0])
Expand Down
12 changes: 10 additions & 2 deletions pandas/io/tests/parser/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -611,15 +611,23 @@ def test_multi_index_blank_df(self):
data = """a,b
"""
df = self.read_csv(StringIO(data), header=[0])
expected = DataFrame(columns=[('a',), ('b',)])
expected = DataFrame(columns=['a', 'b'])
tm.assert_frame_equal(df, expected)
round_trip = self.read_csv(StringIO(
expected.to_csv(index=False)), header=[0])
tm.assert_frame_equal(round_trip, expected)

data_multiline = """a,b
c,d
"""
df2 = self.read_csv(StringIO(data_multiline), header=[0, 1])
expected2 = DataFrame(columns=[('a', 'c'), ('b', 'd')])
cols = MultiIndex.from_tuples([('a','c'), ('b', 'd')])
expected2 = DataFrame(columns=cols)
tm.assert_frame_equal(df2, expected2)
round_trip = self.read_csv(StringIO(
expected2.to_csv(index=False)), header=[0, 1])
tm.assert_frame_equal(round_trip, expected2)


def test_no_unnamed_index(self):
data = """ id c0 c1 c2
Expand Down

0 comments on commit fedfff8

Please sign in to comment.