如何用Python Pandas计算满足多条件的车型平均价格?
修正后的代码及步骤说明
你的初始代码存在几个问题:
- 函数内部代码没有缩进,这在Python里会直接触发语法错误
groupby里的'criteria'列不存在,你的需求里并没有这个字段- 没有先过滤符合条件的数据,直接分组会包含所有不符合要求的记录
mean是方法,需要加括号调用,且语法应为['price'].mean()(或.price.mean())
以下是完善后的代码,完全匹配你的需求:
import numpy as np import pandas as pd df = pd.read_csv("vehicles.csv") def get_avg_prices(): # 筛选符合所有条件的数据 filtered_df = df[ (df['manufacturer'].isin(['Honda', 'Toyota'])) & (df['condition'] == 'good') & (df['type'] == 'sedan') ] # 按厂商分组,计算对应车型的平均价格 avg_prices = filtered_df.groupby('manufacturer')['price'].mean() return avg_prices # 调用函数并打印结果 print(get_avg_prices())
代码说明:
- 数据筛选:用布尔索引组合三个条件,
isin()用于匹配多个厂商值,&表示逻辑与(注意每个条件要单独加括号) - 分组计算:只需要按
manufacturer分组即可,因为你需要的是Honda和Toyota各自的平均价格,不需要多余的分组字段 - 结果格式:最终返回的是一个Series,索引是厂商名称,值是对应符合条件车型的平均价格;如果需要转换成DataFrame格式方便查看,可以在分组后添加
.reset_index():
avg_prices = filtered_df.groupby('manufacturer')['price'].mean().reset_index()
内容的提问来源于stack exchange,提问作者Mike Zhao
相关产品推荐
相关产品推荐

