当前位置: 首页 > 知识库问答 >
问题:

如何在分割数据集时修复python代码中的“KeyError:1”

尹昂雄
2023-03-14

我正在尝试将时间序列数据拆分为训练集和测试集。但是在运行代码时,我得到了关键错误:1

def prepare_data(data, lags=1):
    X, y = [], []
    for row in range(len(data) - lags - 1):
        a = data[row:(row + lags), 0]
        X.append(a)
        y.append(data[row + lags, 0])

    return np.array(X), np.array(y)     

# prepare the data
lags = 1
X_train, y_train = prepare_data(train, lags)
X_test, y_test = prepare_data(test, lags)
y_true = y_test     # due to naming convention

错误消息:

KeyError Traceback(最近的调用最后)C:\Program Data\Anacondaa3\envs\tf\lib\site-包\熊猫\core\索引\base.py在get_loc(自我,密钥,方法,公差)2656尝试:-

熊猫/_libs/索引。大熊猫中的pyx_图书馆。指数IndexEngine。获取_loc()

熊猫/_libs/索引。大熊猫中的pyx_图书馆。指数IndexEngine。获取_loc()

pandas/_libs/hashtable_class_helper。熊猫体内的pxi_图书馆。哈希表。PyObjectHashTable。获取_项()

pandas/_libs/hashtable_class_helper。熊猫体内的pxi_图书馆。哈希表。PyObjectHashTable。获取_项()

关键错误:1

在处理上述异常期间,发生了另一个异常:

KeyError Traceback(最近调用最后一次)在1#准备数据2滞后=1----

在准备数据时(数据,滞后)4 a=数据[行:(行滞后)]5 X追加(a)----

C:\Program Data\Anacondaa3\envs\tf\lib\site-包\熊猫\core\getitem(自己,密钥)中的frame.py2925如果self.columns.nlevels

1:2926返回自我_getitem_多级(键)-

C:\Program Data\Anacondaa3\envs\tf\lib\site-包\熊猫\核心\索引\base.pyget_loc(自我,密钥,方法,公差)2657
返回自我。_engine.get_loc(密钥)2658除了KeyError:-

熊猫/_libs/索引。大熊猫中的pyx_图书馆。指数IndexEngine。获取_loc()

熊猫/_libs/索引。大熊猫中的pyx_图书馆。指数IndexEngine。获取_loc()

pandas/_libs/hashtable_class_helper。熊猫体内的pxi_图书馆。哈希表。PyObjectHashTable。获取_项()

pandas/_libs/hashtable_class_helper。熊猫体内的pxi_图书馆。哈希表。PyObjectHashTable。获取_项()

关键错误:1

共有1个答案

窦华晖
2023-03-14

我猜您的索引错误被提出了,因为您使用了数据帧的索引,但似乎您真正想要的是基于位置访问它。

如果以下代码更改修复了此问题,请尝试:

  def prepare_data(data, lags=1):
        X, y = [], []
        index_of_y_column= 0    # change this if necessary
        indexes_of_x_columns= [i for i in range(data.shape[1]) if i != index_of_y_column]
        for row in range(len(data) - lags - 1):
            a = data.iloc[(row + lags): indexes_of_x_columns]
            X.append(a)
            y.append(data.iloc[row + lags, index_of_y_column])
        return np.array(X), np.array(y)     

顺便说一下,如果您只想移动一列或多列,或者整个数据框(在最后一种情况下,所有数据都相对于索引进行了移动),您还可以使用shift()方法。

例如,数据。shift(1)会将整个数据帧移动一行。

data['targetcol_shifted']= data['targetcol'].shift(-1)

将使用存储在下一行的targetcol值填充新列targetcol\u shift。如果您可以使用shift()我建议您更喜欢它,因为它比手工操作快得多。

 类似资料:
  • 问题内容: 我想要达到的目标是这样的: 所以我搜索并找到了这个完美的正则表达式: 作为下一个逻辑步骤,我尝试了: 为什么这不起作用,如何从python中的链接问题中获得结果? 编辑:解决方案摘要 我用一些测试用例测试了所有提供的解决方案: 总而言之,您可以说@kalefranz的解决方案与问题不符(请参阅最后一种情况),而@casimir et hippolyte的解决方案占用了一个空格,因此违反

  • 在大型 Web 应用程序中,通常需要将应用程序代码拆分为多个可以按需加载的 JS 包。 这种称为“代码分割”的策略通过减小初次加载时的 JS 的包的大小,来提高应用程序的性能。 要使用 Redux 进行代码拆分,我们希望能够将 reducer 动态添加到 store。 但是,Redux 实际上只有一个 root reducer 函数。 这个 root reducer 通常是在初始化应用程序时通过调

  • 我有一个集合,每个用户都有自己的文档。现在,我想创建一个子集合来存储与特定用户相关的更多数据。 到目前为止,我的代码如下所示: 如何将数据存储在子集合中? 编辑我创建了一个新的保存函数,但firestore创建了一个名为“uid”的新文档,而不是使用当前uid将数据存储在文档的子集合中。如何解决这个问题?

  • 在前几节讨论的目标检测问题中,我们一直使用方形边界框来标注和预测图像中的目标。本节将探讨语义分割(semantic segmentation)问题,它关注如何将图像分割成属于不同语义类别的区域。值得一提的是,这些语义区域的标注和预测都是像素级的。图9.10展示了语义分割中图像有关狗、猫和背景的标签。可以看到,与目标检测相比,语义分割标注的像素级的边框显然更加精细。 图像分割和实例分割 计算机视觉领

  • 问题内容: 我正在尝试在python 2.7中编辑/修改现有的元数据。更具体而言,我在我的月历中有GPS坐标,但是海拔字段不正确。有办法改变吗? 我看过了 ,但似乎找不到修改现有字段的方法。 有没有人设法做到这一点?听起来这很简单,但我似乎无法解决。 干杯戴夫 问题答案: (550,1)%某些值以小数格式保存。这意味着550m(51,2)将为25.5m。 将高度设置为140m

  • 每个页面只会导入import中绑定以及被用到的代码. 也就是说并不会加载不需要的代码! import cowsay from 'cowsay-browser' export default () => <pre> {cowsay.say({ text: 'hi there!' })} </pre>