我正在尝试对我的数据帧进行一次热编码。这是一个多维数组,我不知道如何做到这一点。数据帧可以是这样的:使用熊猫或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]',因为那是它所需要的。 –
你能给出所有可能的位置值吗? –