Итак, я пытаюсь заполнить недостающие строки данных, используя среднее значение значений в строке выше и ниже нее. Я относительно новичок в программировании, поэтому прошу прощения за любой неточный код.
Ниже приводится функция, которую я использую, и некоторые данные.
import pandas
def avg_round(a,b,c):
x = float(round((a + b)/2,c))
return x
def fill_in_single(c,ro): ##ro signifies to how many digits I need to round the new value to, "c" is the column we need to edit
m_list = single_missing(c) ##this list has all the rows that are empty in the column "c"
for i_obj in m_list:
act_row=i_obj-2 ##I need to do this because the rows are stored as their excel row numbers which is different from the pandas df row number
prev_row=act_row-1
next_row=act_row+1
prev_val=c[prev_row]
next_val=c[next_row]
new_val=avg_round(prev_val,next_val,ro)
df.at[act_row,'{}'.format(c)] = new_val
fill_in_single(Column,0)
print(df.at[2,'Column'])
OUTPUT:
nan
Index Column
0 1
1 9
2
3 0
Итак, когда я запускаю это и пытаюсь распечатать значение якобы «обновленного» столбца, я получаю «nan» вместо new_val. Я выполнил эту команду печати в функции, и она возвращает new_val. Я действительно не уверен, что мне делать?
Я также запускал код вне функции, и он правильно обновляет столбцы. Так почему же функция не работает?