@@ -826,45 +826,49 @@ def get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False,
826
826
827
827
if columns is None :
828
828
columns_to_encode = data .select_dtypes (
829
- include = ['object' , 'category' ]). columns
829
+ include = ['object' , 'category' ])
830
830
else :
831
- columns_to_encode = columns
831
+ columns_to_encode = data [ columns ]
832
832
833
833
# validate prefixes and separator to avoid silently dropping cols
834
834
def check_len (item , name ):
835
835
len_msg = ("Length of '{name}' ({len_item}) did not match the "
836
836
"length of the columns being encoded ({len_enc})." )
837
837
838
838
if is_list_like (item ):
839
- if not len (item ) == len (columns_to_encode ):
840
- len_msg = len_msg .format (name = name , len_item = len (item ),
841
- len_enc = len (columns_to_encode ))
839
+ if not len (item ) == columns_to_encode .shape [1 ]:
840
+ len_msg = \
841
+ len_msg .format (name = name , len_item = len (item ),
842
+ len_enc = columns_to_encode .shape [1 ])
842
843
raise ValueError (len_msg )
843
844
844
845
check_len (prefix , 'prefix' )
845
846
check_len (prefix_sep , 'prefix_sep' )
846
847
if isinstance (prefix , compat .string_types ):
847
848
prefix = cycle ([prefix ])
848
849
if isinstance (prefix , dict ):
849
- prefix = [prefix [col ] for col in columns_to_encode ]
850
+ prefix = [prefix [col ] for col in columns_to_encode . columns ]
850
851
851
852
if prefix is None :
852
- prefix = columns_to_encode
853
+ prefix = columns_to_encode . columns
853
854
854
855
# validate separators
855
856
if isinstance (prefix_sep , compat .string_types ):
856
857
prefix_sep = cycle ([prefix_sep ])
857
858
elif isinstance (prefix_sep , dict ):
858
- prefix_sep = [prefix_sep [col ] for col in columns_to_encode ]
859
+ prefix_sep = [prefix_sep [col ] for col in columns_to_encode . columns ]
859
860
860
- if set ( columns_to_encode ) == set ( data .columns ) :
861
+ if columns_to_encode . shape == data .shape :
861
862
with_dummies = []
863
+ elif columns is not None :
864
+ with_dummies = [data .drop (columns , axis = 1 )]
862
865
else :
863
- with_dummies = [data .drop ( columns_to_encode , axis = 1 )]
866
+ with_dummies = [data .select_dtypes ( exclude = [ 'object' , 'category' ] )]
864
867
865
- for (col , pre , sep ) in zip (columns_to_encode , prefix , prefix_sep ):
868
+ for (col , pre , sep ) in zip (columns_to_encode .iteritems (), prefix ,
869
+ prefix_sep ):
866
870
867
- dummy = _get_dummies_1d (data [ col ], prefix = pre , prefix_sep = sep ,
871
+ dummy = _get_dummies_1d (col [ 1 ], prefix = pre , prefix_sep = sep ,
868
872
dummy_na = dummy_na , sparse = sparse ,
869
873
drop_first = drop_first , dtype = dtype )
870
874
with_dummies .append (dummy )
0 commit comments