Python 如何使用函数根据数据中的条件找到平均值

Python 如何使用函数根据数据中的条件找到平均值,python,pandas,conditional-statements,mean,Python,Pandas,Conditional Statements,Mean,如果某些条件为真,我试图得到某些行中数据的平均值。例如,我使用一些汽车数据,包括品牌、年份和价格 如果要创建一个函数,那么如果Model=x和Year=x,则从满足这些条件的所有行中查找平均价格 下面的代码为我提供了所有数据的平均值。如果我没有包含.any(),我将收到一个错误 def avg_price(year, make, price): if (year == 2011).any() & (make == 'BMW').any(): return np.m

如果某些条件为真,我试图得到某些行中数据的平均值。例如,我使用一些汽车数据,包括品牌、年份和价格

如果要创建一个函数,那么如果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'])

当我只想看到符合条件的行的平均价格数据时,我将从整个数据框中得到平均值的返回值。

我认为这样做应该可以:

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)。如果年度序列中至少有一行包含
    2011
  • 但是使用系列
    price
    ,您永远不会选择感兴趣的行

更改和?