pd.DataFrame.iterrows
возвращает ряд для каждой строки в цикле уровня Python, а не динамические ссылки на ваш фрейм данных.Более эффективно, вы можете использовать векторизованные методы по столбцам вместо цикла по строкам (это предполагает, что вы довольны 1 == True
):
df['TOC'] = np.where(df['Freq'] == 20, True, np.nan)
Более идиоматическим является присвоение логических рядов, т.е. True
/ False
только значения:
df['TOC'] = df['Freq'] == 20
Что бы сработало, используя индекс в вашем цикле, хотя это будет неэффективно:
for index, row in df.iterrows():
if row['Freq'] == 20:
df.loc[index, 'TOC'] = True