Seite 1 von 1

Den Wert '-inf' in DataFrame ersetzen

Verfasst: Freitag 4. März 2022, 06:20
von Ghanda11
Moin zusammen,

in meinem Skript lese ich eine .csv Datei aus und rechne mit den Werten weiter. Jetzt kommt zum ersten Mal vor, dass der Wert '-inf' in der Tabelle vorkommt. Mit dem kann ich jetzt nicht so rechnen, wie ich es sonst im Skirpt gemacht hatte.
Meine Idee, fuer die jeweiligen Zeilen den Wert einfach zu ersetzten, funktioniert irgendwie nicht, ich weiss aber nicht genau warum. Vielleicht faellt ja jemandem was auf.

Teile von meinem Code:

Code: Alles auswählen

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math

data = "C:\\Users\\Fimlab\\Documents\\Python Scripts\\Ripplet2cmopen70d.csv"
df = pd.read_csv(data, sep=",", header=19)
df=df.replace('-inf', 0)

Wenn ich nach dem Typen der entsprechenden Zeile frage wird mir angezeigt '-inf' is ein string, es wird aber einfach nicht ersetzt. Habe es auch schon mit -np.inf probiert, das hat aber auch nicht funktioniert.
Und eigentlich sollte durch import math python '-inf' ja auch erkennen, aber das will es irgendwie auch nicht.

Vielen Dank schonmal vorab!

PS: Dass '-inf' nicht 0 ist und so nicht ersetzt werden sollte ist mir bewusst. Ich wuerde nur gerne wissen, wie ich es ersetzten kann, damit ich vernuenftig weiterrechnen kann, bzw mein Programm.

Re: Den Wert '-inf' in DataFrame ersetzen

Verfasst: Freitag 4. März 2022, 07:13
von ThomasL
Du warst schon nah dran

Code: Alles auswählen

df.replace([np.inf, -np.inf], 0, inplace=True)

Re: Den Wert '-inf' in DataFrame ersetzen

Verfasst: Freitag 4. März 2022, 07:58
von Sirius3
-inf wird von Pandas richtig erkannt, wenn das ein String ist, dann ist da noch irgendeine andere Zeile, die nicht in eine Zahl umgewandelt werden kann.
Zeig einen konkreten Ausschnitt Deiner Daten, der die Probleme macht.
Was sind das für Zahlen, was möchtest Du damit berechnen? Im weiteren Verlauf müssen die Formeln mit Unendlich zurechtkommen.

Re: Den Wert '-inf' in DataFrame ersetzen

Verfasst: Freitag 4. März 2022, 09:36
von Ghanda11
ThomasL hat geschrieben: Freitag 4. März 2022, 07:13 Du warst schon nah dran

Code: Alles auswählen

df.replace([np.inf, -np.inf], 0, inplace=True)
Danke schonmal fuer deine Antwort.
Wenn ich allerdings deinen Loesungsvorschlag in meine Code schreibe loescht er irgendwie den kompletten DataFrame. Er ist zwar noch definiert, aber es ist nichts mehr drin. Wenn ich um eine Ausgabe bitte erscheint gar nichts.

Re: Den Wert '-inf' in DataFrame ersetzen

Verfasst: Freitag 4. März 2022, 09:47
von Ghanda11
Sirius3 hat geschrieben: Freitag 4. März 2022, 07:58 -inf wird von Pandas richtig erkannt, wenn das ein String ist, dann ist da noch irgendeine andere Zeile, die nicht in eine Zahl umgewandelt werden kann.
in den Fehlermeldungen wurde mir -inf angezeigt als ungueltiger Wert fuer den DataFrame, bzw bei meiner Rechnung damit. Gut moeglich, dass da noch ein anderer ist, ich wuesste aber nicht, wie ich das rausfinden sollte.
Sirius3 hat geschrieben: Freitag 4. März 2022, 07:58 Zeig einen konkreten Ausschnitt Deiner Daten, der die Probleme macht.
Was sind das für Zahlen, was möchtest Du damit berechnen? Im weiteren Verlauf müssen die Formeln mit Unendlich zurechtkommen.
Ich arbeite mit Daten von einem Oszilloskop, es sind Spannungswerte und ich will sie plotten und mir ausgeben lassen, zu welchem Zeitpunkt die hoechste/nierdigste Spannung aufgetreten ist. Ich benutze das Programm schon seit Monaten und es hat immer funktioniert, nur jetzt nicht mehr (Meine Vermutung, es liegt am -inf).
Das erste Problem habe ich bei dem Part im Code.

Code: Alles auswählen

i = [1, 2, 3, 4]
while j < Channel :
    
    low.append(int(df[[f"Channel.{i[j]}"]].idxmin()))
    mini.append(df.iloc[low[j]][f"Channel.{i[j]}"])
    high.append(int(df[[f"Channel.{i[j]}"]].idxmax()))
    maxi.append(df.iloc[high[j]][f"Channel.{i[j]}"])
    j= j+1

Hier unterstuetzt argmin den dtype (ich gehe von string aus) nicht. Deshalb wollte ich -inf urspruenglich ersetzten.

Re: Den Wert '-inf' in DataFrame ersetzen

Verfasst: Freitag 4. März 2022, 11:13
von Sirius3
Bitte poste hier Beispieldaten. Mit Deiner Beschreibung kann niemand das Problem nachvollziehen.