Если Pandas слишком дорогой, рассмотрите возможность использования NumPy с расширенным логическим индексированием.
Если у вас есть только числовые серии, вам может повезти и вы сможете напрямую изменить базовый массив NumPy.Это, однако, не задокументировано и не рекомендуется.По сути, рекомендуется выполнять все ваши вычисления в NumPy и переходить к Pandas, только если / когда у вас есть конкретные задачи, подходящие для Pandas.
A = df.values
m1 = (A[:, 0] == 0) & (A[:, 1] > 1)
m2 = (A[:, 0] == 1) & (A[:, 1] == A[:, 0])
A[m1] = A[m2]
print(A)
# array([[0, 0, 0],
# [1, 1, 1],
# [0, 0, 0],
# [0, 0, 0],
# [1, 4, 1],
# [3, 1, 1],
# [1, 1, 1]], dtype=int64)
print(df)
# a b c
# 0 0 0 0
# 1 1 1 1
# 2 0 0 0
# 3 0 0 0
# 4 1 4 1
# 5 3 1 1
# 6 1 1 1