Merge remote-tracking branch 'upstream/master' into ea-take · TomAugspurger/pandas@37915e9 (original) (raw)
`@@ -64,35 +64,32 @@ def get_col_type(dtype):
`
64
64
``
65
65
`# reestablish the MultiIndex that has been joined by _to_str_column
`
66
66
`if self.fmt.index and isinstance(self.frame.index, MultiIndex):
`
``
67
`+
out = self.frame.index.format(
`
``
68
`+
adjoin=False, sparsify=self.fmt.sparsify,
`
``
69
`+
names=self.fmt.has_index_names, na_rep=self.fmt.na_rep
`
``
70
`+
)
`
``
71
+
``
72
`+
index.format will sparsify repeated entries with empty strings
`
``
73
`+
so pad these with some empty space
`
``
74
`+
def pad_empties(x):
`
``
75
`+
for pad in reversed(x):
`
``
76
`+
if pad:
`
``
77
`+
break
`
``
78
`+
return [x[0]] + [i if i else ' ' * len(pad) for i in x[1:]]
`
``
79
`+
out = (pad_empties(i) for i in out)
`
``
80
+
``
81
`+
Add empty spaces for each column level
`
67
82
`clevels = self.frame.columns.nlevels
`
68
``
`-
strcols.pop(0)
`
69
``
`-
name = any(self.frame.index.names)
`
70
``
`-
cname = any(self.frame.columns.names)
`
71
``
`-
lastcol = self.frame.index.nlevels - 1
`
72
``
`-
previous_lev3 = None
`
73
``
`-
for i, lev in enumerate(self.frame.index.levels):
`
74
``
`-
lev2 = lev.format()
`
75
``
`-
blank = ' ' * len(lev2[0])
`
76
``
`-
display column names in last index-column
`
77
``
`-
if cname and i == lastcol:
`
78
``
`-
lev3 = [x if x else '{}' for x in self.frame.columns.names]
`
79
``
`-
else:
`
80
``
`-
lev3 = [blank] * clevels
`
81
``
`-
if name:
`
82
``
`-
lev3.append(lev.name)
`
83
``
`-
current_idx_val = None
`
84
``
`-
for level_idx in self.frame.index.labels[i]:
`
85
``
`-
if ((previous_lev3 is None or
`
86
``
`-
previous_lev3[len(lev3)].isspace()) and
`
87
``
`-
lev2[level_idx] == current_idx_val):
`
88
``
`-
same index as above row and left index was the same
`
89
``
`-
lev3.append(blank)
`
90
``
`-
else:
`
91
``
`-
different value than above or left index different
`
92
``
`-
lev3.append(lev2[level_idx])
`
93
``
`-
current_idx_val = lev2[level_idx]
`
94
``
`-
strcols.insert(i, lev3)
`
95
``
`-
previous_lev3 = lev3
`
``
83
`+
out = [[' ' * len(i[-1])] * clevels + i for i in out]
`
``
84
+
``
85
`+
Add the column names to the last index column
`
``
86
`+
cnames = self.frame.columns.names
`
``
87
`+
if any(cnames):
`
``
88
`+
new_names = [i if i else '{}' for i in cnames]
`
``
89
`+
out[self.frame.index.nlevels - 1][:clevels] = new_names
`
``
90
+
``
91
`+
Get rid of old multiindex column and add new ones
`
``
92
`+
strcols = out + strcols[1:]
`
96
93
``
97
94
`column_format = self.column_format
`
98
95
`if column_format is None:
`
`@@ -118,7 +115,7 @@ def get_col_type(dtype):
`
118
115
`ilevels = self.frame.index.nlevels
`
119
116
`clevels = self.frame.columns.nlevels
`
120
117
`nlevels = clevels
`
121
``
`-
if any(self.frame.index.names):
`
``
118
`+
if self.fmt.has_index_names and self.fmt.show_index_names:
`
122
119
`nlevels += 1
`
123
120
`strrows = list(zip(*strcols))
`
124
121
`self.clinebuf = []
`