Как использовать функцию, чтобы найти среднее на основе условий в данных - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь получить среднее значение данных в определенных строках, если выполняются определенные условия. Например, я использую некоторые данные автомобиля, включая марку, год и цену.

Если вы хотите создать функцию, то если Model = x и Year = x, найдите среднюю цену по всем строкам, которые удовлетворяют этим условиям.

Приведенный ниже код дает мне среднее значение всех данных. Если я не включаю .any (), я получаю ошибку.

def avg_price(year, make, price):
    if (year == 2011).any() & (make == 'BMW').any():
        return np.mean(price)

avg_price(df['Year'], df['Make'], df['Price'])

Я получу возврат среднего значения по всему фрейму данных, когда хочу просмотреть среднее значение данных о ценах только для тех строк, которые соответствуют условиям.

1 Ответ

0 голосов
/ 06 ноября 2019

Я думаю, что-то вроде этого должно сделать работу:

def avg_price(df):
    return df [ (df.Year == 2011) & (df.make == "BMW") ].price.mean()
  • df [ (df.Year == 2011) & (df.make == "BMW") ] выбирает строки
  • , затем .price выбирает столбец
  • и наконец .mean() вычисляет средние значения этого столбца для выбранных строк

Существует несколько проблем с исходным предложением

  • (year == 2011).any() вернет один логический параметр, которыйравно True, если хотя бы в одной строке года Серии содержит 2011
  • , но при использовании серии price вы никогда не выберете интересные строки.
...