我有一个类似的熊猫数据框:
Col1 ABC 0 XYZ A 1 XYZ B 2 XYZ C
通过使用get_dummies()ABC列上的pandas函数,我可以得到:
get_dummies()
Col1 A B C 0 XYZ 1 0 0 1 XYZ 0 1 0 2 XYZ 0 0 1
虽然我需要类似的内容,但ABC列的list / array数据类型为:
list / array
Col1 ABC 0 XYZ [1,0,0] 1 XYZ [0,1,0] 2 XYZ [0,0,1]
我尝试使用该get_dummies函数,然后将所有列组合到所需的列中。我找到了很多答案,解释了如何将多个列组合为字符串,如下所示:在pandas / python中的dataframe中合并两列文本。但是我想不出一种将它们组合为列表的方法。
get_dummies
这个问题介绍了使用sklearn’s的想法OneHotEncoder,但我无法使其正常工作。如何对熊猫数据框的一列进行一次热编码?
OneHotEncoder
还有一件事:我遇到的所有答案都有解决方案,在合并时必须手动键入列名称。有没有一种使用Dataframe.iloc()或拼接机制将列合并为列表的方法?
Dataframe.iloc()
这是使用sklearn.preprocessing.LabelBinarizer的示例:
In [361]: from sklearn.preprocessing import LabelBinarizer In [362]: lb = LabelBinarizer() In [363]: df['new'] = lb.fit_transform(df['ABC']).tolist() In [364]: df Out[364]: Col1 ABC new 0 XYZ A [1, 0, 0] 1 XYZ B [0, 1, 0] 2 XYZ C [0, 0, 1]
熊猫替代品:
In [370]: df['new'] = df['ABC'].str.get_dummies().values.tolist() In [371]: df Out[371]: Col1 ABC new 0 XYZ A [1, 0, 0] 1 XYZ B [0, 1, 0] 2 XYZ C [0, 0, 1]