@@ -2890,7 +2890,11 @@ def __init__(self, frame, buf=None, columns=None, col_space=None,
2890
2890
self .formatters = formatters
2891
2891
self .na_rep = na_rep
2892
2892
self .col_space = col_space
2893
- self .column_filter = frame .columns if columns is None else set (columns )
2893
+
2894
+ if columns is not None :
2895
+ self .columns = _ensure_index (columns )
2896
+ else :
2897
+ self .columns = frame .columns
2894
2898
2895
2899
self ._write_to_buffer ()
2896
2900
@@ -2909,8 +2913,7 @@ def _write_to_buffer(self):
2909
2913
str_columns = self ._get_formatted_column_labels ()
2910
2914
2911
2915
stringified = [str_columns [i ] + format_col (c )
2912
- for i , c in enumerate (frame .columns )
2913
- if c in self .column_filter ]
2916
+ for i , c in enumerate (self .columns )]
2914
2917
2915
2918
to_write .append (adjoin (1 , str_index , * stringified ))
2916
2919
@@ -2946,18 +2949,16 @@ def _format_col(col):
2946
2949
def _get_formatted_column_labels (self ):
2947
2950
from pandas .core .index import _sparsify
2948
2951
2949
- columns = self .frame .columns
2950
-
2951
- if isinstance (columns , MultiIndex ):
2952
- fmt_columns = columns .format (sparsify = False , adjoin = False )
2952
+ if isinstance (self .columns , MultiIndex ):
2953
+ fmt_columns = self .columns .format (sparsify = False , adjoin = False )
2953
2954
str_columns = zip (* [[' %s' % y for y in x ]
2954
2955
for x in zip (* fmt_columns )])
2955
2956
if self .sparsify :
2956
2957
str_columns = _sparsify (str_columns )
2957
2958
2958
2959
str_columns = [list (x ) for x in zip (* str_columns )]
2959
2960
else :
2960
- str_columns = [[' %s' % x ] for x in columns .format ()]
2961
+ str_columns = [[' %s' % x ] for x in self . columns .format ()]
2961
2962
2962
2963
if self .show_index_names and self .has_index_names :
2963
2964
for x in str_columns :
0 commit comments