Усреднение определенных значений в фрейме данных Pandas?

#python #sql #pandas

#python #sql #pandas

Вопрос:

У меня есть фрейм данных pandas в Python, который выглядит следующим образом:

   Acct_Num  Acct_Bal             Acct_Type  Acct_Rate    Cust_ID  Emp_ID
0  13330001    2020.0  Check                     0.010  111223333  223333
1  17890006      50.0  Check                     0.010  224422444  223333
2  23330004    3550.0  Saving                    0.030  224422444  223333
3  23330007   11000.0  Saving                    0.035  111223333  223333
4  27890002     130.0  Saving                    0.030  987654321  456789
5  27890003     299.0  Saving                    0.035  123123123  456789
6  37890005   10999.0  Money                     0.040  111223333  456789
7  41230008  200323.0  Loan                      0.070  224422444  123123
8  41230009   21789.0  Loan                      0.075  224422444  123123
9  41230010    1000.0  Loan                      0.060  987654321  123123
  

Мне нужно найти среднее значение Acct_Rate, где Acct_Type равно «Loan». Я знаю, что могу найти среднее значение для всего столбца, используя df['Acct_Rate'].mean() , но я не могу понять, как это сделать только для типов кредитных счетов. Пожалуйста, помогите, спасибо. Если бы вы могли также показать мне, как это сделать в терминах SQL, это было бы здорово. Приветствия!

Комментарии:

1. не могли бы вы поделиться тем, каким будет ваш ожидаемый результат. Вам нужно одно значение ставок по кредитным счетам? вы хотите, чтобы это было в отдельном столбце? Формат вывода определяет, как записывается решение.

Ответ №1:

Чтобы отфильтровать фрейм данных, вы можете передать индекс bool. Например, чтобы получить только строки, где Acct_Type есть Loan , можно написать

 df[df.Acct_Type == 'Loan']
  

Расширяя вашу попытку с помощью этого, можно получить среднее Acct_Rate значение, заданное Acct_type == 'Loan' следующим образом:

 df[df.Acct_Type == 'Loan'].Acct_Rate.mean()
  

В SQL это будет иметь следующий вид

 select avg(acct_rate) from mytable where acct_type = 'Loan'