У меня есть датафрейм df
выглядит следующим образом.Я хочу рассчитать среднее значение за последние 3 не нан столбца.Если есть менее трех не пропущенных столбцов, то среднее число отсутствует.
name day1 day2 day3 day4 day5 day6 day7
A 1 1 nan 2 3 0 3
B nan nan nan nan nan nan 3
C 1 1 0 1 1 1 1
D 1 1 0 1 nan 1 4
Ожидаемый результат должен выглядеть следующим образом:
name day1 day2 day3 day4 day5 day6 day7 expected
A 1 1 nan 2 3 0 3 2 <- 1/3*(day5 + day6 + day7)
B nan nan nan nan nan nan 3 nan <- less than 3 non-missing
C 1 1 0 1 1 1 1 1 <- 1/3*(day5 + day6 + day7)
D 1 1 0 1 nan 1 4 2 <- 1/3 *(day4 + day6 + day7)
Я знаю, как рассчитать среднееиз последних трех столбцов и подсчитайте, сколько существует не пропущенных наблюдений.df.iloc[:, 5:7].count(axis=1) average of the last three column
df.iloc[:, 5:7].count(axis=1) number of non-nan in the last three column
Если существует менее 3 не пропущенных наблюдений, я знаю, как установить среднее значение, чтобы пропустить, используя df.iloc[:, 1:7].count(axis=1) <= 3
.
Но я изо всех сил пытаюсь найти способ вычислить среднее значение для трех последних не пропущенных столбцов.Кто-нибудь может научить меня, как решить эту проблему, пожалуйста?