2016-11-07 42 views
3

我有一個csv文件,其中有25列有些是數字的,有些是分類的,有些像演員,導演的名字。我想要在這些數據上使用迴歸模型。爲了做到這一點,我必須使用scikit包中的LabelBinarizer將分類列字符串類型轉換爲數字值。 如何在具有多個分類數據的此數據框上使用LabelBinarize?LabelBinarizer數據框中的多列

SampleData

基本上我想二值化的標籤並將其添加到數據幀。

在下面的代碼中,我已經檢索了我想要二進制化的列的列表,但無法弄清楚如何將新列添加回df?

categorylist = ['color', 'language', 'country', 'content_rating'] 
for col in categorylist: 
    tempdf = label_binarizer.fit_transform(df[col]) 

在接下來的步驟,我想添加tempdfdf和刪除原始列DF [COL]。

+0

代碼中的'df'是一個熊貓數據框?請注意,'sklearn'方法的輸出(如代碼中的'fit_transform')是一個numpy數組!因此,你的代碼中的'tempdf'不是'Pandas'數據框!首先,您需要將其轉換爲數據框(例如'newdf = pd.DataFrame(tempdf)'),然後將其連接到您的'df'。你也可以使用'del df ['column_name']''刪除列。 最後一條評論是確定你是否需要'LableBinarizer'或'MultiLabelBinarizer'。 – MhFarahani

回答

3

你可以用pd.get_dummies做到這一點的一個班輪:

tempdf = pd.get_dummies(df, columns=categorylist) 

否則,你可以使用帶有FunctionTransformer一個FeatureUnion作爲回答sklearn pipeline - how to apply different transformations on different columns

編輯:正如@dukebody添加在評論中,您還可以使用sklearn-pandas包,其目的是能夠對每個數據幀列應用不同的轉換。

+1

您也可以使用sklearn-pandas包,其目的是能夠對每個數據幀列應用不同的轉換。 – dukebody

+0

@dukebody這看起來很方便! – maxymoo