Создание сценария:
Предполагается, что фрейм данных состоит из двух серий, где A
- это ввод, а B
- это результат A[index]*2
:
df = pd.DataFrame({'A': [1, 2, 3],
'B': [2, 4, 6]})
Позволяет сказатьЯ получаю фрейм данных размером 100 тыс. Строк и ищу в нем ошибки (здесь B->0
недопустим):
df = pd.DataFrame({'A': [1, 2, 3],
'B': [2, 0, 6]})
Поиск недопустимых строк с использованием
invalid_rows = df.loc[df['A']*2 != df['B']]
У меня есть invalid_rows
сейчас, но я не уверен, что будет самым быстрым способом перезаписать недопустимые строки в исходном df
с результатом A[index]*2
?
Итерация по df
с использованием iterrows()
- вариант, но медленный, если df
растет. Можно ли как-то использовать df.update()
для этого?
Рабочий раствор с циклом:
index = -1
for row_index, my_series in df.iterrows():
if myseries['A']*2 != myseries['B']:
df[index]['B'] = myseries['A']*2
Но есть ли более быстрый способ сделать это?