Итерация не обязательна для установки значения столбца на основе условия.Вместо этого вы должны использовать логическое индексирование.
Пример:
data = {'Time':['18:28:59', '18:28:59', '18:28:59'],
'Location':['Gate-2', 'Gate-3', 'Gate-1', ],
'Event':['Access Granted', 'NO Access', 'NO Access'],
'BadgeID':[81002, 80557, 80557]}
df = pd.DataFrame(data)
Time Location Event BadgeID
0 18:28:59 Gate-2 Access Granted 81002
1 18:28:59 Gate-3 NO Access 80557
2 18:28:59 Gate-1 NO Access 80557
Метод 'loc' - это индексатор на основе меток, который принимает логический массив, а также другиеoptions.
Условное выражение:
df.Location == 'Gate-3'
возвращает логический массив или Series
0 False
1 True
2 False
Name: Location, dtype: bool
Это можно проверить с помощью встроенной функции type ()
type(df.Location == 'Gate-3')
# pandas.core.series.Series
Эта серия используется в качестве индекса строки для исходного метода loc DataFrame.
Метод loc использует индексатор строк и индексатор столбцов.Таким образом, приведенный ниже оператор
df.loc[df.Location == 'Gate-3', 'Location'] = np.nan
преобразуется в:
Установите пересечение строк, в которых Location равен Gate-3, а столбец Location - нулевое значение