Pandas означает в столбце для подмножества в другом столбце

#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