Добавление строк между значениями полностью факториализует и интерполирует значения

#python #python-3.x #pandas #interpolation

Вопрос:

У меня есть фрейм данных из 3 столбцов, 2 из которых полностью факториальны, а третий легко вычисляется плюс некоторый шум, но ради аргументации мы отбросим шум. Ниже приведен воспроизводимый пример:

 from itertools import product
import pandas as pd
mylist = list(product([0,10,20], [0,10,20]))
df= pd.DataFrame(data=mylist, columns=["A", "B"])
df['C'] = df['A'] **2   df['B'] ** 2
print(df.head(10))
 

что приводит к:

     A   B    C
0   0   0    0
1   0  10  100
2   0  20  400
3  10   0  100
4  10  10  200
5  10  20  500
6  20   0  400
7  20  10  500
8  20  20  800
 

Как бы то ни было, я хотел бы увеличить разрешение. Например, не переходите к шагам 10, а к шагам 1.

В настоящее время я добавляю совершенно новый фрейм данных с тем же кодом, что и выше, но с большими диапазонами. Получите строку для каждой возможной полностью факториальной комбинации 'A' и 'B' . После слов я помещаю полиномиальную регрессию для строки c и применяю ее к новому кадру данных.

мой текущий код выглядит примерно так:

 new_a_list = list(range(min(a_list), max(a_list) 1, 1))
new_b_list = list(range(min(b_list), max(b_list) 1, 1))
my_new_list = list(product(new_a_list, new_b_list))
new_df= pd.DataFrame(data=my_new_list, columns=["A", "B"])
model =  make_pipeline(PolynomialFeatures(2), linear_model.LinearRegression())
model.fit(df[['A', 'B']], df['C'])
new_df['C'] = model.predict(new_df[['A', 'B']])
print(new_df.head(20))
 

Это приводит к следующему результату:

     A   B             C
0   0   0  1.136868e-13
1   0   1  1.000000e 00
2   0   2  4.000000e 00
3   0   3  9.000000e 00
4   0   4  1.600000e 01
5   0   5  2.500000e 01
6   0   6  3.600000e 01
7   0   7  4.900000e 01
8   0   8  6.400000e 01
9   0   9  8.100000e 01
10  0  10  1.000000e 02
11  1   0  1.000000e 00
12  1   1  2.000000e 00
13  1   2  5.000000e 00
14  1   3  1.000000e 01
15  1   4  1.700000e 01
16  1   5  2.600000e 01
17  1   6  3.700000e 01
18  1   7  5.000000e 01
19  1   8  6.500000e 01
 

Я знаю, что в панд встроена интерполяция, но я не знаю, как эффективно добавлять строки между существующими строками. И поэтому даже не доходите до той части, где я мог бы применить свое ноу-хау интерполяции.

Спасибо за весь ваш вклад.