Взять среднее значение по условию

Есть таблица people в ней столбцы ID, Sex. Есть таблица cars имеющая столбцыID ID_person и Price Как посчитать среднюю цену только для владельцев со значением Seх = "м" Я пробовал взять все индексы

result = data_people.Sex[data_people.Sex == 'м'].index.tolist()

Потом

result2 = (data_cars.merge(data_people.Sex[data_people.Sex == 'м'].index ,left_on="ID_person", right_on="ID",suffixes=["", "_2"]).mean("Price") )

 ID      Name         Height   Weight          Sex
  1 Журавлёвa Ия       184      40              ж
  2 Пестовa Снежана    183      40              ж
  3 Исаков Андрей      184      41              м
  4 Зуевa Альбина      179      40              ж
  5 Горбунов Сергей    183      41              м
 ID  ID_person Model   Price
  0    5       LADA    100000
  1    2      Toyota   50000
  2    1      Toyota   600000
  3    3      Daewoo   65000
  4    4      Subaru   300000

Получить надо среднее значение от 100000 и 65000

Как получить эту одну цифру?


Ответы (2 шт):

Автор решения: passant

Как то все очень сложно. Почему бы не сделать примерно вот так:

.....['Price'].mean()

или так

... .Price.mean()

и будет вам "одна цифра".

→ Ссылка
Автор решения: MaxU

Вариант 1:

In [9]: cars.merge(pers.rename(columns={"ID":"ID_person"})).groupby("Sex")["Price"].mean()
Out[9]:
Sex
ж    316666.666667
м     82500.000000
Name: Price, dtype: float64

Вариант 2:

In [10]: cars.merge(pers.query("Sex == 'м'").rename(columns={"ID":"ID_person"})).groupby("Sex")["Price"].mean()
Out[10]:
Sex
м    82500
Name: Price, dtype: int64
→ Ссылка