Функция подсчета допустимых ответов

#python #pandas

Вопрос:

У меня есть большой df со структурой, подобной этой

 id q2 q7 q3 q5 q12
1  1  2  2  9  
2  2  4  8  9
3     5
4  3
5  7           2     
 

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

 valid = np.sum(df.notnull().sum(axis=1)>0) 
 

Но возможно ли создать функцию,которая принимает,например, q2 (начинается) и q3 (заканчивается) и возвращает только для этого подмножества переменных (q2, q7, q3), сколько существует не пропущенных строк?

Таким образом,вызов valid(df,q2, q7) возвращает 5,поскольку полных отсутствующих строк нет,но вызов valid(df, q5, q12) возвращает 3, поскольку отсутствуют 2 строки.

Спасибо!

Ответ №1:

Вы можете нарезать с loc помощью . Кроме того, для логических данных sum()>0 эквивалентно any()

 df.loc[:,'q2':'q3'].notnull().any(axis=1).sum()
# 5

df.loc[:,'q3':'q12'].notnull().any(axis=1).sum()
# 3