#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'