Seite 1 von 1

pandas, DataFrame wird plötzlich zum Empty DataFrame

Verfasst: Montag 21. August 2017, 00:03
von pixewakb
Ich habe folgenden Quellcode (Auszug!). Das ist bei mir in eine größere Programmlogik eingebunden:

Code: Alles auswählen

from pprint import pprint

print(type(werte))
pprint(werte)
input(">>> Weiter? ")

print(type(werte))
pprint(werte[start_index:ende_index])
input(">>> Weiter? ")
Und bekomme da dann folgende Ergebnisse in der Konsole, die ich mir aktuell nicht erklären kann.

Code: Alles auswählen

<class 'pandas.core.frame.DataFrame'>
           Spaltenkopf
730851.0   15.12
730882.0   18.12
730910.0   20.12
730941.0   20.12
730971.0   22.12
[...]

[187 rows x 1 columns]
>>> Weiter? 
<class 'pandas.core.frame.DataFrame'>
Empty DataFrame
Columns: [Spaltenkopf]
Index: []
>>> Weiter? 
Hat jemand eine Idee, was da passieren könnte? Das Empty DataFrame wundert mich, weil ich an den Daten zwischenzeitlich (s. o.!) nicht gearbeitet habe. Mache ich etwas falsch, habe ich was übersehen oder ist das ein bekanntes Problem? Das hat mich heute geringfügig überrascht.

Re: pandas, DataFrame wird plötzlich zum Empty DataFrame

Verfasst: Montag 21. August 2017, 06:54
von noisefloor
Hallo,

wie sieht denn `werte`bei dir aus? Zeig' doch mal den Befehl, der `werte` Werte zuweist.

Gruß, noisefloor

Re: pandas, DataFrame wird plötzlich zum Empty DataFrame

Verfasst: Montag 21. August 2017, 07:52
von Sirius3
@pixewakb: wenn seltsame Dinge passieren, heißt das meist, an einer Stelle, wo Du nicht dran denkst. Da hilft es wenig, einen Auszug zu zeigen, denn der zeigt das Problem offensichtlich nicht.

Poste einen lauffähigen Code, der das Problem auch zeigt.

Re: pandas, DataFrame wird plötzlich zum Empty DataFrame

Verfasst: Montag 21. August 2017, 09:28
von BlackJack
@pixewakb: Der Frame ändert sich ja nicht, Du gibst da ja zwei verschiedene Frames aus. Und einer ist halt leer. Wie kann das sein? Die Slice-Indices sind gleich oder Ende ist kleiner als Start, oder der Slice liegt ausserhalb der tatsächlich vorhandenen Zeilenanzahl. Kann man ja auch schon mit einer Liste demonstrieren:

Code: Alles auswählen

In [1]: A = list(range(10))

In [2]: A
Out[2]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [3]: A[5:5]
Out[3]: []

In [4]: A[5:1]
Out[4]: []

In [5]: A[23:42]
Out[5]: []
Das gilt auch für `DataFrame`\s.

Re: pandas, DataFrame wird plötzlich zum Empty DataFrame

Verfasst: Montag 21. August 2017, 12:05
von pixewakb
Sirius3 hat geschrieben:Poste einen lauffähigen Code, der das Problem auch zeigt.
Das wird ein Problem - an dem ich aber arbeiten werde -, weil ich da etliche Fremdbibliotheken sowie eigene Bibliotheken in einem kleinen Abschnitt verwende. Ich versuche mal den Fehler zu isolieren und dann was zu posten.
BlackJack hat geschrieben:@pixewakb: Der Frame ändert sich ja nicht, Du gibst da ja zwei verschiedene Frames aus. Und einer ist halt leer. Wie kann das sein? Die Slice-Indices sind gleich oder Ende ist kleiner als Start, oder der Slice liegt ausserhalb der tatsächlich vorhandenen Zeilenanzahl. Kann man ja auch schon mit einer Liste demonstrieren:
Ich hatte zunächst einen Fehler in meiner pandas-Installation vermutet (die muckerte schon mal rum), auf die Indizes bin ich nicht gekommen. Dem gehe ich gleich mal nach. (<s>Obwohl der Fehler vorher auftreten müsste, weil die zweite type()-Anweisung noch vor Setzen der Indizes erfolgt!?</s>) Ich gebe mich mal wieder an den Quelltext heran...

DANKE fürs Feedback!

PS Die Ansage leeres DataFrame erscheint beim Printen des DataFrames. Ich komme der Sache näher...

Re: pandas, DataFrame wird plötzlich zum Empty DataFrame

Verfasst: Montag 21. August 2017, 12:27
von BlackJack
@pixewakb: Die beiden `print()`/`type()` geben doch auch das gleiche aus. Die geben beide ``<class 'pandas.core.frame.DataFrame'>``. ``Empty DataFrame`` kommt nicht von dieser Zeile, sondern wirklich erst von dem leeren `DataFrame`

Code: Alles auswählen

In [6]: import pandas as pd

In [7]: pd.DataFrame()
Out[7]: 
Empty DataFrame
Columns: []
Index: []

In [8]: type(pd.DataFrame())
Out[8]: pandas.core.frame.DataFrame

Re: pandas, DataFrame wird plötzlich zum Empty DataFrame

Verfasst: Montag 21. August 2017, 13:16
von kbr
@pixewakb: anhand Deines Codefragments sind nicht passende Index-Werte am wahrscheinlichsten. Gibt diese doch einfach mal aus:

Code: Alles auswählen

print(type(werte))
pprint(werte[start_index:ende_index])
print(start_index, ende_index)
Dann siehst Du recht schnell, ob es daran liegt.

Re: pandas, DataFrame wird plötzlich zum Empty DataFrame

Verfasst: Montag 21. August 2017, 13:45
von pixewakb
Danke fürs Feedback! Ich habe den Fehler inzwischen gefunden und arbeite an dessen Behebung.

Ich habe mehrere Listen, die ich parallel begrenzen (slicing) muss, wobei ich eine Liste mit Datumswerten als Muster verwende. Ich habe nicht bedacht, dass ich bei den DataFrames die Datumswerte als Index verwende, so dass ich mit Integern als Index nicht weiterkomme :oops: Danke für die Denkanstöße!!!