Seite 1 von 1

index is not defined -error

Verfasst: Montag 28. Oktober 2019, 08:42
von jokoenig
Hi leute ich habe folgenden nicht selbst geschriebenen Code:

Code: Alles auswählen

import pandas as pd
import glob as glob

files= glob.glob('./*.csv')

final_df = pd.DataFrame(index=index, columns=columns)

for file in files:
    df=pd.read_csv(file)
    df_filtered=df[df['tagIdent'].str.contains("e1_100")]
    pd.concat([final_df, df_filtered] , axis=1)

print (final_df)

df.to_csv('filtered.csv' , sep=",")
Also die Datei liegt in einem Ordner mit ca. 25000 csv Dateien. Ich möchte das python file jetzt über die consolse mit dem python befehl laufen lassen bekomme aber folgende Errormessage:

"the name “index” is not defined"

Zum Nutzen der Datei: Die Datei soll alle csv files durchgehen und sämtliche zeilen in denen der string e1_100 vorkommt kopieren. Alle diese Zeilen aller csv dateien sollen dann in einer einzelnen csv Datei untereinander eingefügt werden.


Kann mir einer helfen, was ich abändern muss?
P.s. ich hab keine Erfahrung mit Python..

Grüsse,
Jonas

Re: index is not defined -error

Verfasst: Montag 28. Oktober 2019, 08:50
von sparrow
Bitte verwende die Code-Tags (der </> Button im vollständigen Editor fügt sie automatische ein), wenn du Code postest. Dann bleibt auch die Einrückung erhalten, die bei Python wichtig ist.

In Zeile 6

Code: Alles auswählen

final_df = pd.DataFrame(index=index, columns=columns)
verwendest du die Variablennamen "index" und "columns". Beide sind an dieser Stelle nicht definiert. Was sie sein sollen, kann man leider nicht erraten.

Re: index is not defined -error

Verfasst: Montag 28. Oktober 2019, 08:51
von Jankie
Du übergibst ja auch keine Werte für index und columns.

Schau mal in die offizielle Doku.

Re: index is not defined -error

Verfasst: Montag 28. Oktober 2019, 09:05
von jokoenig
Also die beiden Variablen stehen denke ich für die spaltenzahl, in dem fall 3 bzw. C weil mein string e1_100 in jeder csv datei immer in spalte C ist. Also das denke ich zumindest.

Wenn ihr den Code mal aussen vor lasst, wie würdet ihr es ansonsten schreiben?

Re: index is not defined -error

Verfasst: Montag 28. Oktober 2019, 09:17
von __blackjack__
@jokoenig: Du solltest das was Du denkst am besten mal durch lesen der Dokumentation überprüfen. Programmieren durch raten geht nicht lange gut.

Re: index is not defined -error

Verfasst: Montag 28. Oktober 2019, 09:23
von jokoenig
ein stück schlauer bin ich geworden. Die Index-werte stehen für die Zeile und die Column-werte für die entsprechende spalte.
wie gesagt ich hab 0.0 Erfahrung in python und dachte ihr seht gleich einen fehler und wie ich ihn ausbessern kann

Re: index is not defined -error

Verfasst: Montag 28. Oktober 2019, 09:32
von sparrow
Den Fehler, den wir sofort gesehen haben, haben wir dir doch gesagt.
Aber was dein Programm machen soll, warum wo welche Werte stehen: das weißt nur du.

Hier ein Link zum offiziellen Tutorial. Den Link zur Pandas-Dokumentation hat dir Jankie schon weiter oben gepostet.
Das sind gute EInstiegspunkte um zu verstehen, was der Code tut und ihn dann entsprechend weiterzuentwickeln.

Re: index is not defined -error

Verfasst: Montag 28. Oktober 2019, 10:23
von __deets__
Da ist noch mehr krumm: wenn du mal so weit bist, deinen aggregierten Frame zu schreiben, speicherst du den falschen.

Und statt eines leeren Frames würde ich mir einfach den ersten merken. Und an den immer anhängen.

Re: index is not defined -error

Verfasst: Montag 28. Oktober 2019, 10:26
von __blackjack__
@jokoenig: Ich denke nicht das Du die Dokumentation verstanden hast. Der `index`-Wert steht nicht für „die Zeile“ sondern für den Index (wer hätte das gedacht) und `columns` nicht „für die entsprechende Spalte“ sondern das sind die Spaltenbeschriftungen. Was der Index bei Pandas ist, wofür der wie genutzt wird, solltest Du auch in der Dokumentation nachlesen.

Letztlich ist das vorgehen einen `DataFrame` immer wieder durch `concat()` zu erweitern aber auch ein bisschen ineffizient. Man würde da eher die `DataFrame`\s in einer Liste sammeln und am Schluss zu einem grossen zusammenfügen.