You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Pandas计算符合指定条件的车型平均价格并返回元组?

解决方法

你的初始代码存在几个明显问题:

  • 未先筛选符合条件的数据,直接分组会包含大量无关行
  • groupby的列参数错误,不存在criteria列,且你实际需要按品牌分组计算均值
  • mean是方法需加括号调用mean(),而非直接引用方法对象
  • 函数内代码缺少缩进(违反Python语法要求)

以下是修正后的完整实现:

import pandas as pd

df = pd.read_csv("vehicles.csv")

def get_avg_prices():
    # 1. 筛选符合条件的行:品牌为Honda/Toyota、车况good、车型sedan
    filtered_data = df[
        (df['manufacturer'].isin(['Honda', 'Toyota'])) &
        (df['condition'] == 'good') &
        (df['type'] == 'sedan')
    ]
    
    # 2. 按品牌分组,计算对应平均价格
    brand_avg_prices = filtered_data.groupby('manufacturer')['price'].mean()
    
    # 3. 按指定品牌顺序转换为元组(确保Honda在前、Toyota在后)
    # 若无需固定顺序,直接用tuple(brand_avg_prices.values)即可
    return (brand_avg_prices['Honda'], brand_avg_prices['Toyota'])

关键步骤说明:

  • 数据筛选:用布尔索引组合三个条件,isin()用于匹配多个品牌值,&表示逻辑与(注意括号不能省略,避免运算符优先级错误)
  • 分组计算:仅按manufacturer分组,提取price列后调用mean()得到均值,结果是一个Series,索引为品牌名,值为对应平均价格
  • 转换元组:如果需要固定顺序的结果,直接通过索引取值;若不关心顺序,tuple(brand_avg_prices.values)也能得到符合要求的元组

简化写法提示:

可以用query()方法简化筛选代码,可读性更强:

filtered_data = df.query("manufacturer in ['Honda', 'Toyota'] and condition == 'good' and type == 'sedan'")

内容的提问来源于stack exchange,提问作者Mike Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:41:32