2017-10-03 3 views
0

Ich habe eine große Datendatei, die ich ein wenig bearbeiten möchte. Ich überprüfe, ob der Wert in einer bestimmten Spalte (Spalte 8 in diesem Fall) den gleichen Wert in mehreren Zeilen hat, und wenn er die gleiche Anzahl von Zeilen wie meine "Multiplizität" -Variable erreicht, speichere ich diese Zeilen in eine neue Array. Wenn jedoch dieser Betrag nicht erreicht wird, möchte ich den Wert in einer anderen Spalte (Spalte 5) für die geprüften Zeilen auf die Anzahl der erreichten Zeilen ändern (d. H. Meine "Zähl" -Variable). Hier funktioniert mein Code nicht.Ändern von Werten in einer bestimmten Spalte in einer Liste

multiplicity=7 
complete_systems=[]  
for i in range(len(matching_rows)): 
    count = 0 
    value=matching_rows[i][8] 
    for j in range(len(matching_rows)): 
     if matching_rows[j][8]==value: 
      count+=1 
    if count ==multiplicity: 
     complete_systems.append(matching_rows[i]) 
    else count for matching_rows[i][5] in matching_rows: 
     complete_systems.append(matching_rows[i]) 

wo übereinstimmende_Rows mein Array ist. Beispielzeilen:

[memmap(['K00806.02', '60.32494216', '12.19', '89.83', '0.2998', '5', '22', 
     '0.8670', '0.9860', '347.20'], 
     dtype='<U12'), 
memmap(['K00806.01', '143.2063047', '8.9', '89.83', '0.5336', '5', '9', 
     '0.8670', '0.9860', '138.80'], 
     dtype='<U12'), 
memmap(['K00232.05', '56.2590881', '2.22', '89.97', '0.287', '5', '22', 
     '1.1910', '0.9950', '29.70'], 
     dtype='<U12'), 

So funktioniert der Code bis zum ELSE-Teil, der nur einen ungültigen Syntaxfehler zurückgibt. Ich habe nicht viel Erfahrung mit dem Programmieren, so würde ich einige Hinweise lieben!

Antwort

0

den Job Dies scheint getan haben sollte!

0
else count for matching_rows[i][5] in matching_rows: 

hat keine Bedeutung in Python. Zunächst einmal benötigt sonst Kolon, nachdem es:

else: 

Sie wahrscheinlich

elif count for matching_rows[i][5] in matching_rows: 

aber

count for matching_rows[i][5] in matching_rows: 

noch keine Bedeutung in Python bedeuten hat. Sie wollten wahrscheinlich

matching_rows[i][5] in matching_rows: 

so die komplette Aussage

elif matching_rows[i][5] in matching_rows: 
+0

Ah, ich erkenne jetzt, dass "for" in diesem Fall wahrscheinlich eine for-Schleife initiiert. Aus irgendeinem Grund dachte ich, es könnte verwendet werden, um Werte zu ersetzen (wie in Set "count" für den Wert in Zeile "i" Spalte 5 in Matching_Rows ...). Versuchen Sie eine andere Herangehensweise mit Ihrer Antwort! –

Verwandte Themen