2017-06-01 48 views
0

我有一些我导入的大型csv文件。我提取了一些特定的列来创建只有那些列的新矩阵。我使用连接为了放置列彼此相邻。现在我想通过从中提取一些行来将这个矩阵分成两个较小的矩阵。我不知道为什么我在连接的数据上使用弹出功能时不断收到错误。连接后弹出

data_set=[annual_inc, delinq_2yrs, dti, emp_length, loan_amnt, installment, int_rate, open_acc, total_acc, pub_rec, acc_now_delinq, loan_stat] 

result=pd.concat(data_set,axis=1) 

def splitDataSet(x, splitRatio): 
    trainSize = int(len(x)*splitRatio) 
    trainSet=[] 
    copy=x 
    while len(trainSet)<trainSize: 
     index=random.randrange(len(copy)) 
     trainSet.append(copy.pop(index)) 
    return[trainSet, copy] 

splitRatio=0.67 
train, test=splitDataSet(result, splitRatio) 
print(train) 

当我使用data_set流行之前已经连接起来它的工作原理,但随后删除相应的列,这是不是我所期待的。例如命令

result.pop(0) 

后出现错误'KeyError: 0'我只想从数组中删除行“0” result

PS:我从一开始像进口和一些可变预处理省略的行。如果有人需要它,我可以粘贴它。

+0

请编辑,添加你得到的输出和你想要的输出 – 16num

回答

1

copy=x并不是真的复制列表(x是一个列表,对吧?),但使copy指向相同的列表,x。当然,copy.pop()相当于x.pop(),这不是你想要的。

复制列表do copy = x[:]

0

好的。我想我得到了这个。首先,我必须将熊猫数组'结果'转换为列表。为了做到这一点我使用:

a=result.values.tolist() 

然后从这一点a.pop()工作正常。