首页 > 解决方案 > 将 Pandas 数据帧中的值更改为 one-hot 编码

问题描述

我在分类数据的熊猫中有一个数据框。每列代表一个时间步长,每一行代表一个人。

数据集包含给定时间步长上个人的位置。地点是这样的:1)人在挑人 2)人在家 3)人在工作等。有13个不同的位置

有 720 列代表 2 分钟的时间步长(总共一整天)。

我想将这些分类位置转换为 one-hot 向量。问题是单行可能不包含 13 个不同的变量,因此每一行的编码都不同,而没有针对所有变量的标准规则。

我也尝试手动完成:

old_l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
new_l = [[1,0,0,0,0,0,0,0,0,0,0,0,0], [0,1,0,0,0,0,0,0,0,0,0,0,0], [0,0,1,0,0,0,0,0,0,0,0,0,0], [0,0,0,1,0,0,0,0,0,0,0,0,0], 
            [0,0,0,0,1,0,0,0,0,0,0,0,0], [0,0,0,0,0,1,0,0,0,0,0,0,0], [0,0,0,0,0,0,1,0,0,0,0,0,0], [0,0,0,0,0,0,0,1,0,0,0,0,0],
            [0,0,0,0,0,0,0,0,1,0,0,0,0], [0,0,0,0,0,0,0,0,0,1,0,0,0], [0,0,0,0,0,0,0,0,0,0,1,0,0], [0,0,0,0,0,0,0,0,0,0,0,1,0],
            [0,0,0,0,0,0,0,0,0,0,0,0,1]]

df.replace(old_l, new_l, 
           inplace=True)

但我得到了错误ValueError: cannot assign mismatch length to masked array

有谁知道这样做的方法?

谢谢!

标签: pythonpandasone-hot-encoding

解决方案


推荐阅读