pandas - sklearn TimeSeriesSplit 错误:KeyError:'[0 1 2 ...] 不在索引中'
问题描述
我想在以下数据帧上使用来自 sklearn 的 TimeSeriesSplit 来预测总和:
因此,要准备 X 和 y,我执行以下操作:
X = df.drop(['sum'],axis=1)
y = df['sum']
然后将这两个喂给:
for train_index, test_index in tscv.split(X):
X_train01, X_test01 = X[train_index], X[test_index]
y_train01, y_test01 = y[train_index], y[test_index]
通过这样做,我收到以下错误:
KeyError: '[ 0 1 2 ...] not in index'
这里 X 是一个数据框,显然这会导致错误,因为如果我将 X 转换为数组,如下所示:
X = X.values
然后它将起作用。但是,为了以后对模型的评估,我需要 X 作为数据框。有什么方法可以将 X 保留为数据框并将其提供给 tscv 而不将其转换为数组?
解决方案
正如@Jarad 正确所说,如果您更新了 pandas 版本,它不会像以前的版本那样自动切换到基于整数的索引。您需要明确使用.iloc
基于整数的切片。
for train_index, test_index in tscv.split(X):
X_train01, X_test01 = X.iloc[train_index], X.iloc[test_index]
y_train01, y_test01 = y.iloc[train_index], y.iloc[test_index]
推荐阅读
- javascript - 刷新后反应数据表不重新填充
- flutter - 我的浮动操作按钮没有从一个屏幕更改到另一个屏幕
- graphql - 放大/反应 AppSync graphql 订阅 @auth 错误
- android - Koin DI 清除依赖
- r - R中我的班级名称中的大写字母问题
- python - 如何根据 Git 子模块的需要对父存储库进行版本控制?
- powershell - 在 Powershell 中识别外部和内部硬盘驱动器
- excel - 将范围保存在 VBA 中的变量中以用于多个文件
- python - 类型错误:pack_configure() 缺少 1 个必需的位置参数:'self'
- c++ - 无法在 C++ 中获取所需的输出