如何用Python Pandas结合groupby计算符合条件的车型平均价格
解决Pandas计算指定条件车型平均价格的问题
你的现有代码存在几个问题:
- 分组里的
criteria列不存在,属于无效字段 - 没有先过滤符合条件的数据,会导致计算所有品牌的均价,不符合需求
mean是方法,需要加()才能执行计算,否则只是引用方法对象
下面是修正后的完整代码,附带步骤说明:
步骤说明
- 先筛选出符合所有条件的行:manufacturer为Honda/Toyota、condition为good、type为sedan
- 仅按
manufacturer分组,分别计算两个品牌的价格均值 - 强制指定品牌顺序,确保返回元组的顺序固定(Honda在前,Toyota在后)
- 将计算结果转为元组返回
import pandas as pd df = pd.read_csv("vehicles.csv") def get_avg_prices(): # 过滤满足所有条件的数据 filtered_data = df[ (df['manufacturer'].isin(['Honda', 'Toyota'])) & (df['condition'] == 'good') & (df['type'] == 'sedan') ] # 按品牌分组计算均价,指定顺序避免结果混乱 average_prices = filtered_data.groupby('manufacturer')['price'].mean().reindex(['Honda', 'Toyota']) # 转为元组返回,若某个品牌无数据,默认返回NaN,可加fill_value=0替换为0 return tuple(average_prices.values)
如果需要处理某个品牌没有符合条件数据的情况,比如用0填充缺失值,可以修改这一行:
average_prices = filtered_data.groupby('manufacturer')['price'].mean().reindex(['Honda', 'Toyota'], fill_value=0)
内容的提问来源于stack exchange,提问作者Mike Zhao
相关产品推荐
相关产品推荐

