0

Ich habe über 500 Dateien, die ich mit einem Pandas Datenrahmen bereinigt habe und später als Matrix eingelesen habe. Ich möchte jetzt fehlende Datenzeilen aus mehreren Variablen für die Gesamtheit meiner Dateien löschen. Jede Variable ist ziemlich lang für ihre Form, zum Beispiel, tc und wspd haben die Form (84479, 558) und Druck hat die Form (558,). Ich habe das folgende Beispiel schon einmal ausprobiert und in der Vergangenheit für eindimensionale Arrays mit der gleichen Form gearbeitet, werde aber nicht mehr mit einem zweidimensionalen Array arbeiten.Löschen von Datenzeilen für mehrere Variablen

bad=[] 
    for i in range(len(p)): 
     if p[i]==-9999 or tc[i]==-9999: 
      bad.append(i) 
    p=numpy.delete(p, bad) 
    tc=numpy.delete(tc, bad) 

Ich habe versucht mit dem folgenden Code statt, aber mit keinem Erfolg (leider).

import numpy as n 
import pandas as pd 

wspd=pd.read_pickle('/home/wspd').as_matrix() 
tc=pd.read_pickle('/home/tc').as_matrix() 

press=n.load('/home/file1.npz') 
p=press['press'] 
names=press['names'] 

length=n.arange(0,84479) 
for i in range(len(names[0])): #using the first one as a trial to run faster 
    print i #used later to see how far we have come in the 558 files 
    bad=[] 
    for j in range(len(length)): 
     if (wspd[j,i]==n.nan or tc[j,i]==n.nan): 
      bad.append(j) 
     print bad 

Von dort plane ich, fehlende Daten zu löschen, wie ich vorher außer Indizierung getan hatte, die Dimension, die ich aus meinem ersten forloop bin zu löschen.

 new_tc=n.delete(tc[j,:], bad) 

Leider hat dies nicht funktioniert. Ich habe auch versucht, das Array zu maskieren, was auch nicht funktioniert hat.

Der Grund, warum ich brauche die Daten meine nächste Bibliothek löschen nicht versteht nan Werte, es erfordert streng ganze Zahlen, Schwimmern, usw.

Ich bin offen für neue Methoden für die Datenzeilen zu entfernen, wenn jemand eine hat Beratung. Ich schätze es sehr.

Antwort

0

Ich würde Ihren 2-dimensionalen Arrays als Pandas Datenrahmen laden und verwenden Sie dann die dropna Funktion alle Zeilen zu löschen, die einen Nullwert

wspd = pd.read_pickle('/home/wspd').dropna() 
tc = pd.read_pickle('/home/tc').dropna() 

Die Dokumentation für pandas.DataFrame.dropna enthalten ist here

Verwandte Themen