Если вы заинтересованы в использовании pandas dataframe, то решение ваших проблем выглядит следующим образом:
import pandas as pd
from sklearn.model_selection import KFold
X = [[ 0.87, -1.34, 0.31, 0],
[-2.79, -0.02, -0.85, 1],
[-1.34, -0.48, -2.55, 0],
[ 1.92, 1.48, 0.65, 1]]
finalDF = pd.DataFrame(X * 20, columns=['col1', 'col2', 'col3', 'Target'])
folds = KFold(n_splits=5)
scores = []
for trainIndex, testIndex in folds.split(finalDF.drop(['Target'], axis=1)):
# print(trainIndex, testIndex)
xTrain = finalDF.loc[trainIndex, :]
xTest = finalDF.loc[testIndex, :]
print(xTrain.shape, xTest.shape)
Для этого примера вы получите в качестве вывода (в распечатке)
(64, 4) (16, 4)
(64, 4) (16, 4)
(64, 4) (16, 4)
(64, 4) (16, 4)
(64, 4) (16, 4)
Ваша проблема заключалась в том, что при попытке доступа к Dataframe лучше указать индекс или доступ к столбцам, и метод lo c является хорошим вариантом для этого. В случае y вы получите хороший результат, потому что вы преобразуетесь в pd.Series перед индексацией.
Надеюсь, это поможет!