连接后弹出
问题描述:
我有一些我导入的大型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:我从一开始像进口和一些可变预处理省略的行。如果有人需要它,我可以粘贴它。
答
copy=x
并不是真的复制列表(x
是一个列表,对吧?),但使copy
指向相同的列表,x
。当然,copy.pop()
相当于x.pop()
,这不是你想要的。
复制列表do copy = x[:]
。
答
好的。我想我得到了这个。首先,我必须将熊猫数组'结果'转换为列表。为了做到这一点我使用:
a=result.values.tolist()
然后从这一点a.pop()工作正常。
请编辑,添加你得到的输出和你想要的输出 – 16num