Błąd z tytułu jest taki, bo jeśli lista jest naprawdę listą (typ zmiennej), to musisz używać indeksów liczbowych.
Żeby możliwe były indeksy tekstowe, to zamiast listy musisz użyć słownika (dict()
).
Te nawiasy kwadratowe nie wyglądają dobrze...
strainer = lista['Env'].str.upper()=='NO'][['PB']
Tak jakbyś chciała z wyrażenia boolean lista['Env'].str.upper()=='NO'
pobrać wartość spod indeksu 'PB'
przy użyciu nawiasu kwadratowego... Poza tym jest o jeden otwierający nawias kwadratowy za dużo. (zanim @Riddle poprawił).