@Keranie: Das ist in der Tat umständlicher und nicht wirklich gut gelöst.
Statt -999 würde man besser einen ”einfacheren” Wert nehmen der die Bedinung erfüllt, also zum Beispiel -1 als erste negative Zahl, und ich würde auch kommentieren warum man den Wert zuweist.
`k` manuell hochzuzählen ist umständlich und fehleranfällig. Das würde man in der ``for``-Schleife mit `enumerate()` erledigen. Allerdings wird das nur zum Indexzugriff auf eine Sequenz verwendet, also braucht man es gar nicht wenn man die beiden Sequenzen mit `itertools.izip()` ”im Gleichschritt” iteriert.
`line` ist überflüssig und vom Namen her auch falsch.
Ist der Indexzugriff auf ``qdat['Pegel']`` wirklich *so* gewollt? Dir ist klar was für einen Typ der Wert hat der dort ausgegeben wird und warum das so ist? Du zeigst Deine Versuche das Ergebnis in eine Datei zu schreiben ja nicht, aber könnte es sein das genau hier das Problem besteht?
Die Zeilen 9 und 10 sind ziemlich sicher falsch eingerückt.
Ohne zu wissen was Du beim schreiben in eine Datei machst, kann man schlecht sagen was daran falsch ist. Man würde das auch eher von der Verarbeitung trennen, also statt ausgaben mit ``print`` oder in eine Datei zu machen, sollte in der Funktion ein Ergebnis (Liste, Array) erstellt werden, welches dann an anderer Stelle, ggf. mit einer eigenen Funktion, in eine Datei geschrieben wird.
Um das ``=`` bei Zuweisungen (ausser bei Defaultwerten in Funktionssignaturen und -aufrufen) und um binäre Operatoren werden üblicherweise Leerzeichen gesetzt um die Lesbarkeit zu verbessern.
Edit: In ”echtem” Python könnte das so aussehen:
Code: Alles auswählen
previous_difference = -1
for difference, level in izip(qdat['Difference'], qdat['Pegel']):
print level if previous_difference > 0 and difference < 0 else 'false'
previous_difference = difference
Letztendlich würde man aber besser die Möglichkeiten von `numpy` auch nutzen. Dafür ist es ja schliesslich da.