if os.path.isfile(os.path.basename(filename)) and filename.startswith(prefix):
print(filename)
print(os.getcwd())
df = pd.read_csv(filename, sep=';', dtype=object, encoding='ANSI', header=None)
# df
if zakl != 'sluz':
df = df[df[7].str.contains("YS") == False]
Jeśli ten pierwszy `if` nie jest spełniony, to `df` nigdy nie jest ustawiony; późniejszy kod wykonuje się niezależnie czy `df` jest ustawiony czy nie, to pewnie dlatego się wywala. Nie powinieneś po prostu tego wszystkiego wykonywać w środku tego pierwszego `if`a?
Boczne uwagi:
Nie wiem o co chodzi z tymi liniami z samym `df`, to nic nie robi;
for filename in os.listdir(path):
if os.path.isfile(os.path.basename(filename))
To też jest dziwne; pierwsza linia daje ścieżkę bezwzględną, druga daje ścieżkę względną i polega na wcześniejszym chdir.
dtype=object,
Ustawiając _wszystkie_ kolumny na typ object, mocno wyrzucasz na śmietnik zalety wydajnościowe i pamięciowe pandasa; to powinno dotyczyć tylko kolumn stringowych, nie?
subset=[0,3,4,7],
Ustaw w read_csv listę nazw kolumn, żeby nie trzeba było się indeksami bawić.