我想把一个由元素列表组成的Pandas列分解成与唯一元素一样多的列,即one-hot-encode
them(值1
表示行中存在的给定元素,0
表示不存在的情况)。
例如,以 Dataframe df为例
Col1 Col2 Col3
C 33 [Apple, Orange, Banana]
A 2.5 [Apple, Grape]
B 42 [Banana]
我想将其转换为:
法国法郎
Col1 Col2 Apple Orange Banana Grape
C 33 1 1 1 0
A 2.5 1 0 0 1
B 42 0 0 1 0
我如何使用panda/sklearn来实现这一点?
6条答案
按热度按时间wpx232ag1#
我们也可以使用sklearn.preprocessing.MultiLabelBinarizer:
我们经常希望对真实世界的数据使用sparseDataFrame,以节省大量RAM。
稀疏解(适用于Pandas v0.25.0+)
结果:
浓溶液
结果:
w8ntj3qf2#
第一个月
pir_fast
pir_alt1
3yhwsihp3#
您可以使用函数
explode
(0.25.0版中的新增函数)和crosstab
:或者在Python 3.7+中:
使用方法isin的另一种方法:
输出:
qoefvg9y4#
使用
get_dummies
:输出:
清除色谱柱:
输出:
yyyllmsg5#
您可以使用
apply
循环Col3
,并将每个元素转换为Series,其中列表作为索引,成为结果数据框中的标题:bqjvbblv6#
可以使用集合解析得到
Col3
中的所有唯一结果,如下所示:使用字典理解,你可以检查每一个独特的水果,看看它是否在列中。
计时