Python ValueError:列的长度必须与键的长度相同

Python ValueError:列的长度必须与键的长度相同,python,pandas,dummy-variable,one-hot-encoding,Python,Pandas,Dummy Variable,One Hot Encoding,我在运行下面的代码时遇到问题 数据是我的数据帧。X是列车数据的列列表。L是带有数值的分类特征列表 我想对我的分类特征进行一个热编码。因此,我做如下工作。但是抛出了一个“ValueError:Columns必须与key长度相同”(最后一行)。经过长时间的研究,我仍然不明白为什么 def turn_dummy(df, prop): dummies = pd.get_dummies(df[prop], prefix=prop, sparse=True) df.drop(prop, ax

我在运行下面的代码时遇到问题

数据是我的数据帧。X是列车数据的列列表。L是带有数值的分类特征列表

我想对我的分类特征进行一个热编码。因此,我做如下工作。但是抛出了一个“ValueError:Columns必须与key长度相同”(最后一行)。经过长时间的研究,我仍然不明白为什么

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)

这似乎是一个维度问题。情况如下:

假设我有一个
列表
,如下所示:

mylist = [0, 0, 0, 0]
它的长度是4。如果我想将新列表的元素1:1映射到该列表中:


otherlist=['a','b']
对于范围内的i(len(mylist)):
mylist[i]=其他列表[i]
显然,这将抛出一个
索引器
,因为它试图获取
otherlist
没有的元素

同样的情况也发生在这里。您正在尝试将
字符串
(len=1)插入长度为n>1的列。尝试:

data_final[X] = turn_dummy(data_final[X], L)

假设
len(L)=行数

在这种情况下
X
是什么?