Seite 1 von 1

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()

Verfasst: Sonntag 4. Juli 2021, 16:04
von tschaka81
Hallo,

ich beschäftige mich gerade mit Pandas und bin dabei auf folgendes Problem gestoßen:

Ich habe ein Dataframe erstellt und wollte nun zu diesem weitere "Zeilen" hinzufügen. Die Zeilen kommen einzeln an und sollen später per HDF5 weggeschrieben werden.

Ich habe das Problem, dass meine Append Methode nicht funktioniert. ich bekomme als Fehler:
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
Hierbei ist Spektrum ein array, der Rest sind alles Skalare.

Hier meine Funktion.

Code: Alles auswählen

    def append_dataframe(self, time, spectrum, realtime, lifetime, angle):
        dftemp = pd.DataFrame([[spectrum, lifetime, realtime, angle]], index=[time], columns=["Spektrum", "Lifetime", "Realtime", "Winkel"])
        if self.df:
            self.df.append(dftemp)
        else:
            self.df = dftemp
Was mache ich falsch? Der code stoppt bei der append funktion, wenn die Funktion das zweite mal durchläuft. (Am anfangt ist self.df = ""

Grüße

Re: ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()

Verfasst: Sonntag 4. Juli 2021, 16:35
von tschaka81
Hallo,

habe das Problem gefunden:

Das Problem war nicht das append (abgesehen davon dass es self.df = self.df.append heißen muss)

Es war tatsächlich das if self.df:

Hab ich nicht richtig geschaut.

trotzdem Danke

Re: ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()

Verfasst: Sonntag 4. Juli 2021, 16:38
von Sirius3
Der Fehler ist in der Zeile, die auch in der Fehlermeldung angegeben ist.
Die Lösung sieht wahrscheinlich so aus:

Code: Alles auswählen

if self.df is None: