2017-06-01 1 views
0

J'ai quelques grands fichiers csv que j'ai importés. J'ai extrait des colonnes spécifiques pour créer une nouvelle matrice uniquement avec ces colonnes. J'ai utilisé concaténer afin de placer les colonnes les unes à côté des autres. Maintenant je voudrais diviser cette matrice en deux plus petites en en extrayant quelques lignes. Je ne sais pas pourquoi je continue d'obtenir l'erreur lors de l'utilisation de la fonction pop sur les données concaténées.Pop après concaténer

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) 

Lorsque j'utilise pop sur data_set avant qu'il ait été concaténé cela fonctionne, mais il supprime la colonne correspondante et il est pas ce que je cherche. Par exemple après la commande

result.pop(0) 

Je reçois l'erreur 'KeyError: 0' je voudrais simplement supprimer la ligne « 0 » du tableau result

PS: J'omis les lignes depuis le début comme les importations et certains pré-traitement variable. Si quelqu'un en a besoin, je peux le coller.

+0

s'il vous plaît modifier, ajouter la sortie que vous obtenez et la sortie que vous voulez – 16num

Répondre

1

copy=x ne copie pas vraiment la liste (x une liste, non?), Mais faire copy pour pointer vers la même liste que x. Bien sûr, copy.pop() est équivalent à x.pop() ce qui n'est pas ce que vous voulez.

Pour copier la liste, faites copy = x[:].

0

Ok. Je pense que j'ai eu ça. Premièrement, j'ai dû transformer le tableau pandas 'result' en liste. Pour ce faire j'ai utilisé:

a=result.values.tolist() 

puis à partir de ce point a.pop() fonctionne très bien.