#python #database #pandas
#python #База данных #pandas
Вопрос:
У меня есть фрейм данных под названием houses:
transaction_id house_id date_sale sale_price boolean_2015
0 1 1 31 Mar 2016 £880,000 True
3 4 2 31 Mar 2016 £450,000 True
4 5 3 31 Mar 2016 £680,000 True
6 7 4 31 Mar 2016 £1,850,000 True
postcode
0 EC2Y
3 EC2Y
4 EC1Y
6 EC2Y
и мне было интересно, как вычислить средние значения sale_price на основе каждого почтового индекса
таким образом, результат
Average
0 EC1Y £123220
1 EC2Y £434930
Я сделал это с averages = data.groupby(['postcode'], as_index=False).mean()
но это не вернуло sale_price
есть мысли?
Комментарии:
1. сначала вам нужно очистить
sale_price
столбец и привести его к числовому dtype…
Ответ №1:
Вы можете сначала replace
£,
очистить строку, а затем преобразовать to_numeric
столбец sale_price
. Последнее приведение к string
by astype
, если нужно добавить £
в столбец sale_price
:
data.sale_price = pd.to_numeric(data.sale_price.str.replace('[£,]',''))
averages = data.groupby(['postcode'], as_index=False)['sale_price'].mean()
averages.sale_price = '£' averages.sale_price.astype(str)
print (averages)
postcode sale_price
0 EC1Y £680000
1 EC2Y £1060000