【问题标题】:ValueError: Columns must be same length as keyValueError:列的长度必须与键的长度相同
【发布时间】:2019-02-24 23:49:05
【问题描述】:

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

data 是我的数据框。 X 是训练数据的列列表。 L 是具有数值的分类特征列表。

我想对我的分类特征进行一次热编码。所以我做如下。但是会抛出“ValueError: Columns must be same length as 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)

【问题讨论】:

  • 在这种情况下X 是什么?

标签: python pandas dummy-variable one-hot-encoding


【解决方案1】:

这似乎是一个维度问题。如下所示:

假设我有一个像这样的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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2022-01-23
    • 2018-11-04
    相关资源
    最近更新 更多