Взять среднее значение по условию
Есть таблица 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