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

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
tschaka81
User
Beiträge: 31
Registriert: Donnerstag 24. Januar 2019, 08:15

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
tschaka81
User
Beiträge: 31
Registriert: Donnerstag 24. Januar 2019, 08:15

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

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:
Antworten