Seite 1 von 1

Schleife mit and Bedingung

Verfasst: Mittwoch 20. Juni 2018, 12:34
von itzhalpepe
Guten Tag,
ich habe meine Modularbeit nun fast fertig und benötige bei einem Code noch Hilfe, weil ich dort nicht wirklich eine Lösung finde:

Ich habe einen Dataframe mit einem Zeitstempel und 2 Spalten, eine Spalte ist die Windgeschwindigkeit und eine für den Niederschlag. Ich will nun alle Zeilen ausgelesen haben, bei welchem die Windgeschwindigkeit größer als 6 ist und der Niederschlag kleiner als 0,05.

Meine Idee war:

for i in TabelleWindundNiederschlag:
if 'Niederschläge'<0.1 and 'Windgeschwindigkeit'>6:
print()

Aber dann kommt die Fehlermeldung: File "<ipython-input-77-db6a21034ed0>", line 2, in <module>
if 'Niederschläge'<0.1 and 'Windgeschwindigkeit'>6:

TypeError: '<' not supported between instances of 'str' and 'float'

Ich hoffe, es kann schnell geholfen werden mit einem Tipp.

Re: Schleife mit and Bedingung

Verfasst: Mittwoch 20. Juni 2018, 12:46
von __blackjack__
Die Fehlermeldung ist ja recht eindeutig. Die Zeichenkette 'Niederschläge' kann nicht mit der Gleitkommazahl 0.1 mit ``<`` verglichen werden. Macht ja auch wenig Sinn.

Du brauchst da ziemlich wahrscheinlich keine Schleife, denn in dem Beispiel verwendest Du `i` ja auch gar nicht. Stattdessen könntest Du die Spalten (`Series`) mit 0.1 bzw. 6 vergleichen, die beiden Ergebnisse `&`-Verknüpfen, und als Index in den `DataFrame` verwenden.

Re: Schleife mit and Bedingung

Verfasst: Mittwoch 20. Juni 2018, 12:50
von sls
Bitte deinen Code hier in Python-Tags pasten, bestenfalls auch noch deine zugrunde liegende Liste, ich tue mich mit so imaginären Dingen eher schwer :-)

Die Fehlermeldung ist eindeutig, du versuchst anscheinend irgendwo einen str-Datentyp mit einem float-Datentyp zu vergleichen, was nicht funktionieren kann. Auch deine Itereation mit anschließender if-Bedingung wird Probleme bereiten, da nur `i` als Inhalt der Tabelle zur Verfügung steht, also eine ganze Zeile deiner Tabelle, nicht aber die einzelnen Werte daraus. Was du also tun musst ist die Werte aus `i` *herausnehmen* und dann mit den Schwellwerten vergleichen.

Re: Schleife mit and Bedingung

Verfasst: Mittwoch 20. Juni 2018, 13:10
von __blackjack__
@sls: Es liegt ein „Dataframe” vor, was ich mal als `pandas.DataFrame` interpretieren würde: Also keine ``for``-Schleifen wenn das nicht notwendig ist. Sonst kann man sich `pandas` auch Sparen und tatsächlich mit Listen operieren. `i` wäre in dem Fall auch jeweils eine Spaltenüberschrift und keine Zeile im `DataFrame`.

Re: Schleife mit and Bedingung

Verfasst: Mittwoch 20. Juni 2018, 13:23
von itzhalpepe
Bild

Hier sieht man mal ein Bild von den Daten

Re: Schleife mit and Bedingung

Verfasst: Mittwoch 20. Juni 2018, 14:39
von __blackjack__
@itzhalpepe: Ändert grundsätzlich nichts an meiner Antwort. Wenn das ein `pandas.DataFrame` ist, dann die beiden Bedingungen über die Spalten auswerten, verknüpfen, und als Index in den `DataFrame` verwenden. Das sind Grundlagen.

Ein Bild von den Daten ist nicht ganz so hilfreich, weil man damit ausser anschauen ja nicht viel anfangen kann. Eine Form die man kopieren/einfügen kann, um selbst mal mit den Daten zu spielen, wäre hilfreicher.