我正在嘗試對我的數據幀進行一次熱編碼。這是一個多維數組,我不知道如何做到這一點。數據幀可以是這樣的:使用熊貓或scikit-learn在多維數組上進行單向熱編碼
df = pd.DataFrame({'menu': [['Italian', 'Greek'], ['Japanese'], ['Italian','Greek', 'Japanese']], 'price': ['$$', '$$', '$'], 'location': [['NY', 'CA','MI'], 'CA', ['NY', 'CA','MA']]})
我想輸出是這樣的:
df2 = pd.DataFrame({'menu': [[1,1,0], [0,0,1], [1,1,1]], 'price': [[1,0], [1,0], [0,1]], 'location': [[1,1,1,0], [0,1,0,0], [1,1,0,1]]})
我不知道如何可以做到這一點使用pd.get_dummies或scikit-learn。 有人可以幫我嗎?
在一個數據幀列表打交道是你想用大熊貓什麼時候做的最後一件事。這是糟糕的設計 - 考慮放棄它。 –
你可以看看[MultiLabelBinarizer](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MultiLabelBinarizer.html)和我的[answer here](https://stackoverflow.com/問題/ 42391165/how-to-one-hot-encode-variant-length-features/42392689#42392689)如何使用它。但是,你必須使用單獨的MultiLabelBinarizer對象來處理每一列。你也可能需要將列中的非列表項改爲列出,如'CA'到'[CA]',因爲那是它所需要的。 –
你能給出所有可能的位置值嗎? –