我运行下面的代码时遇到问题。
数据是我的数据框。 X 是列车数据的列列表。 L 是具有数值的分类特征列表。
我想对我的分类特征进行热编码。所以我这样做。但是会抛出“ValueError:列的长度必须与键相同”(对于最后一行)。经过长时间的研究我仍然不明白为什么。
def turn_dummy(df, prop):
dummies = pd.get_dummies(df[prop], prefix=prop, sparse=True)
df.drop(prop, axis=1, inplace=True)
return pd.concat([df, dummies], axis=1)
L = ['A', 'B', 'C']
for col in L:
data_final[X] = turn_dummy(data_final[X], col)
看来这是一个维度问题。它会像下面这样:
说我有一个list
像这样:
mylist = [0, 0, 0, 0]
它的长度为 4。如果我想将新列表的元素 1:1 映射到该列表中:
otherlist = ['a', 'b']
for i in range(len(mylist)):
mylist[i] = otherlist[i]
显然这会引发IndexError
,因为它试图获取元素otherlist
只是没有
这里也发生了同样的事情。您正在尝试插入一个string
(len=1) 到长度 n>1 的列。尝试:
data_final[X] = turn_dummy(data_final[X], L)
假设len(L) = number_of_rows
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)