index is not defined -error

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
jokoenig
User
Beiträge: 3
Registriert: Montag 28. Oktober 2019, 08:23

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
Zuletzt geändert von jokoenig am Montag 28. Oktober 2019, 08:59, insgesamt 2-mal geändert.
Benutzeravatar
sparrow
User
Beiträge: 4198
Registriert: Freitag 17. April 2009, 10:28

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.
Zuletzt geändert von sparrow am Montag 28. Oktober 2019, 08:52, insgesamt 1-mal geändert.
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Du übergibst ja auch keine Werte für index und columns.

Schau mal in die offizielle Doku.
jokoenig
User
Beiträge: 3
Registriert: Montag 28. Oktober 2019, 08:23

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?
Benutzeravatar
__blackjack__
User
Beiträge: 13122
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@jokoenig: Du solltest das was Du denkst am besten mal durch lesen der Dokumentation überprüfen. Programmieren durch raten geht nicht lange gut.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
jokoenig
User
Beiträge: 3
Registriert: Montag 28. Oktober 2019, 08:23

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
Benutzeravatar
sparrow
User
Beiträge: 4198
Registriert: Freitag 17. April 2009, 10:28

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.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13122
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten