@@ -1132,6 +1132,8 @@ def _copy(self, deepcopy: bool = False) -> Styler:
1132
1132
shallow = [ # simple string or boolean immutables
1133
1133
"hide_index_" ,
1134
1134
"hide_columns_" ,
1135
+ "hide_column_names" ,
1136
+ "hide_index_names" ,
1135
1137
"table_attributes" ,
1136
1138
"cell_ids" ,
1137
1139
"caption" ,
@@ -2042,6 +2044,7 @@ def hide_index(
2042
2044
self ,
2043
2045
subset : Subset | None = None ,
2044
2046
level : Level | list [Level ] | None = None ,
2047
+ names : bool = False ,
2045
2048
) -> Styler :
2046
2049
"""
2047
2050
Hide the entire index, or specific keys in the index from rendering.
@@ -2065,6 +2068,11 @@ def hide_index(
2065
2068
The level(s) to hide in a MultiIndex if hiding the entire index. Cannot be
2066
2069
used simultaneously with ``subset``.
2067
2070
2071
+ .. versionadded:: 1.4.0
2072
+ names : bool
2073
+ Whether to hide the index name(s), in the case the index or part of it
2074
+ remains visible.
2075
+
2068
2076
.. versionadded:: 1.4.0
2069
2077
2070
2078
Returns
@@ -2118,7 +2126,7 @@ def hide_index(
2118
2126
2119
2127
Hide a specific level:
2120
2128
2121
- >>> df.style.format("{:,.1f").hide_index(level=1) # doctest: +SKIP
2129
+ >>> df.style.format("{:,.1f} ").hide_index(level=1) # doctest: +SKIP
2122
2130
x y
2123
2131
a b c a b c
2124
2132
x 0.1 0.0 0.4 1.3 0.6 -1.4
@@ -2127,11 +2135,29 @@ def hide_index(
2127
2135
y 0.4 1.0 -0.2 -0.8 -1.2 1.1
2128
2136
-0.6 1.2 1.8 1.9 0.3 0.3
2129
2137
0.8 0.5 -0.3 1.2 2.2 -0.8
2138
+
2139
+ Hiding just the index level names:
2140
+
2141
+ >>> df.index.names = ["lev0", "lev1"]
2142
+ >>> df.style.format("{:,.1f}").hide_index(names=True) # doctest: +SKIP
2143
+ x y
2144
+ a b c a b c
2145
+ x a 0.1 0.0 0.4 1.3 0.6 -1.4
2146
+ b 0.7 1.0 1.3 1.5 -0.0 -0.2
2147
+ c 1.4 -0.8 1.6 -0.2 -0.4 -0.3
2148
+ y a 0.4 1.0 -0.2 -0.8 -1.2 1.1
2149
+ b -0.6 1.2 1.8 1.9 0.3 0.3
2150
+ c 0.8 0.5 -0.3 1.2 2.2 -0.8
2130
2151
"""
2131
2152
if level is not None and subset is not None :
2132
2153
raise ValueError ("`subset` and `level` cannot be passed simultaneously" )
2133
2154
2134
2155
if subset is None :
2156
+ if level is None and names :
2157
+ # this combination implies user shows the index and hides just names
2158
+ self .hide_index_names = True
2159
+ return self
2160
+
2135
2161
levels_ = _refactor_levels (level , self .index )
2136
2162
self .hide_index_ = [
2137
2163
True if lev in levels_ else False for lev in range (self .index .nlevels )
@@ -2144,12 +2170,16 @@ def hide_index(
2144
2170
# error: Incompatible types in assignment (expression has type
2145
2171
# "ndarray", variable has type "Sequence[int]")
2146
2172
self .hidden_rows = hrows # type: ignore[assignment]
2173
+
2174
+ if names :
2175
+ self .hide_index_names = True
2147
2176
return self
2148
2177
2149
2178
def hide_columns (
2150
2179
self ,
2151
2180
subset : Subset | None = None ,
2152
2181
level : Level | list [Level ] | None = None ,
2182
+ names : bool = False ,
2153
2183
) -> Styler :
2154
2184
"""
2155
2185
Hide the column headers or specific keys in the columns from rendering.
@@ -2173,6 +2203,11 @@ def hide_columns(
2173
2203
The level(s) to hide in a MultiIndex if hiding the entire column headers
2174
2204
row. Cannot be used simultaneously with ``subset``.
2175
2205
2206
+ .. versionadded:: 1.4.0
2207
+ names : bool
2208
+ Whether to hide the column index name(s), in the case all column headers,
2209
+ or some levels, are visible.
2210
+
2176
2211
.. versionadded:: 1.4.0
2177
2212
2178
2213
Returns
@@ -2239,11 +2274,29 @@ def hide_columns(
2239
2274
y a 0.4 1.0 -0.2 -0.8 -1.2 1.1
2240
2275
b -0.6 1.2 1.8 1.9 0.3 0.3
2241
2276
c 0.8 0.5 -0.3 1.2 2.2 -0.8
2277
+
2278
+ Hiding just the column level names:
2279
+
2280
+ >>> df.columns.names = ["lev0", "lev1"]
2281
+ >>> df.style.format("{:.1f").hide_columns(names=True) # doctest: +SKIP
2282
+ x y
2283
+ a b c a b c
2284
+ x a 0.1 0.0 0.4 1.3 0.6 -1.4
2285
+ b 0.7 1.0 1.3 1.5 -0.0 -0.2
2286
+ c 1.4 -0.8 1.6 -0.2 -0.4 -0.3
2287
+ y a 0.4 1.0 -0.2 -0.8 -1.2 1.1
2288
+ b -0.6 1.2 1.8 1.9 0.3 0.3
2289
+ c 0.8 0.5 -0.3 1.2 2.2 -0.8
2242
2290
"""
2243
2291
if level is not None and subset is not None :
2244
2292
raise ValueError ("`subset` and `level` cannot be passed simultaneously" )
2245
2293
2246
2294
if subset is None :
2295
+ if level is None and names :
2296
+ # this combination implies user shows the column headers but hides names
2297
+ self .hide_column_names = True
2298
+ return self
2299
+
2247
2300
levels_ = _refactor_levels (level , self .columns )
2248
2301
self .hide_columns_ = [
2249
2302
True if lev in levels_ else False for lev in range (self .columns .nlevels )
@@ -2256,6 +2309,9 @@ def hide_columns(
2256
2309
# error: Incompatible types in assignment (expression has type
2257
2310
# "ndarray", variable has type "Sequence[int]")
2258
2311
self .hidden_columns = hcols # type: ignore[assignment]
2312
+
2313
+ if names :
2314
+ self .hide_column_names = True
2259
2315
return self
2260
2316
2261
2317
# -----------------------------------------------------------------------
0 commit comments