Как написано, значения x равны c (если я не понимаю вашу проблему) со значениями 1 и 3. Вы хотите выполнить линейную интерполяцию между этими значениями и двумя меняющимися значениями y. Вы просто усредняете значения y, и это линейно-интерполированное значение. Не упускайте из виду простые / очевидные решения для чего-то фантастического (совет, который я стараюсь постоянно помнить).
df.col2 = df[["col1", "col3"]].mean(axis=1)
НАЧАТЬ РЕДАКТИРОВАТЬ
Решение Андре должно работать (сам не проверял) , но должен). Однако это требует итерации по каждой строке, что может быть медленным. Кроме того, существует простое математическое решение, которое позволяет вам работать с массивами, что должно быть быстрее.
Линейная интерполяция выполняется в общем виде:
y = y0 + (x - x0) * (y1 - y0) / (x1 - x0)
С точки зрения фреймов данных / кода:
df.col2 = df.col1 + (x - xp[0]) * (df.col2 - df.col1) / (xp[1] - xp[0])
Я думаю, что был переведен правильно, но Формула выше имеет место. Просто внедрите его в свой код или l oop через каждую строку и вызовите функцию numpy .interp. В любом случае, с тобой все будет в порядке.