Den Wert '-inf' in DataFrame ersetzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Ghanda11
User
Beiträge: 5
Registriert: Donnerstag 14. Oktober 2021, 10:14

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.
Benutzeravatar
ThomasL
User
Beiträge: 1379
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Du warst schon nah dran

Code: Alles auswählen

df.replace([np.inf, -np.inf], 0, inplace=True)
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

-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.
Ghanda11
User
Beiträge: 5
Registriert: Donnerstag 14. Oktober 2021, 10:14

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.
Ghanda11
User
Beiträge: 5
Registriert: Donnerstag 14. Oktober 2021, 10:14

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.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Bitte poste hier Beispieldaten. Mit Deiner Beschreibung kann niemand das Problem nachvollziehen.
Antworten