Codifica delle etichette su più colonne in scikit-learn

| |

Sto cercando di usare LabelEncoder di scikit-learn per codificare un panda DataFrame di etichette di stringhe. Poiché il dataframe ha molte (50+) colonne, voglio evitare di creare un oggetto LabelEncoder per ogni colonna; Preferirei avere solo un grande oggetto LabelEncoder che funzioni su tutte le mie colonne di dati.

Lanciare l'intero DataFrame in LabelEncoder crea l'errore seguente. Tieni presente che sto usando dati fittizi qui; in realtà ho a che fare con circa 50 colonne di dati con etichetta stringa, quindi ho bisogno di una soluzione che non faccia riferimento a nessuna colonna per nome.

import panda da sklearn import preprocessing df = pandas.DataFrame({ "pets": ["cat", "dog", "cat", "monkey", "dog", "dog "], "owner": ["Champ", "Ron", "Brick", "Champ", "Veronica", "Ron"], "location": ["San_Diego", "New_York", "New_York", "San_Diego", "San_Diego", "New_York"] }) le = preprocessing.LabelEncoder() le.fit(df) 

Traceback (ultima chiamata più recente): File "", riga 1, in File "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/preprocessing/label.py", riga 103, in fit y = column_or_1d(y, warn=True) File "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py", riga 306, in column_or_1d raise ValueError("bad input shape {0}".format(shape)) ValueError: cattiva forma dell'input (6, 3)

Qualche idea su come aggirare questo problema?