我需要将数据帧分成10个部分,然后使用其中一个部分作为测试集,剩下的9个部分(合并后用作训练集),我得到了以下代码,我可以在其中拆分数据集,并在选择其中一个后尝试合并剩余的集。第一次迭代进行得很好,但在第二次迭代中出现了以下错误。
df = pd.DataFrame(np.random.randn(10, 4), index=list(xrange(10)))
for x in range(3):
dfList = np.array_split(df, 3)
testdf = dfList[x]
dfList.remove(dfList[x])
print testdf
traindf = pd.concat(dfList)
print traindf
print "================================================"

发布于 2015-04-02 22:14:07
我不认为你必须将数据帧拆分成10个,而是2个。我使用以下代码来拆分训练集和验证集的数据帧:
test_index = np.random.choice(df.index,int(len(df.index)/10),replace=False)
test_df = df.loctest_index
train_df = df.loc~df.index.isin(test_index)
发布于 2015-04-02 11:27:11
好吧,我是这样让它工作的:
df = pd.DataFrame(np.random.randn(10, 4), index=list(xrange(10)))
dfList = np.array_split(df, 3)
for x in range(3):
trainList = []
for y in range(3):
if y == x :
testdf = dfList[y]
else:
trainList.append(dfList[y])
traindf = pd.concat(trainList)
print testdf
print traindf
print "================================================"但更好的方法是受欢迎的。

发布于 2015-04-03 05:24:39
您可以使用numpy.random中的permutation函数
import numpy as np
import pandas as pd
import math as mt
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
df = pd.DataFrame({'a': l, 'b': l})对数据帧索引进行混洗
shuffled_idx = np.random.permutation(df.index) 将shuffled_index划分为N个相等的(Ish)部分
在本例中,假设N=4
N = 4
n = len(shuffled_idx) / N
parts = []
for j in range(N):
parts.append(shuffled_idx[mt.ceil(j*n): mt.ceil(j*n+n)])
# to show each shuffled part of the data frame
for k in parts:
print(df.iloc[k])https://stackoverflow.com/questions/29404377
复制相似问题