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

Pandas筛选符合条件列值报错,如何获取自动挡近两年生产车型型号

Pandas筛选近两年自动挡汽车型号的代码修正方案

错误原因

  • 第一个SyntaxError是因为Python/Pandas的布尔索引逻辑与运算符为单个&,不是其他语言常用的&&,你后续的修改方向是对的。
  • 第二个TypeError是因为左侧df[['year']].drop_duplicates().nlargest(2, 'year')返回的是包含前两大年份的DataFrame对象,不是和原数据行数一致的布尔掩码,无法直接和右侧布尔序列做按位与运算。

正确实现代码

# 提取所有年份中最大的两个年份值,转成列表
latest_two_years = df['year'].drop_duplicates().nlargest(2).tolist()

# 同时满足:年份属于近两年、变速箱类型为自动,筛选对应型号
auto_model = df.loc[
    (df['year'].isin(latest_two_years)) & (df['Sparetype'] == 'Automatic'),
    'model'
]

如果需要返回去重后的唯一型号,可以在末尾追加.drop_duplicates():

unique_auto_model = df.loc[
    (df['year'].isin(latest_two_years)) & (df['Sparetype'] == 'Automatic'),
    'model'
].drop_duplicates()

逻辑说明

用isin()方法判断每行的year值是否属于前两大年份列表,返回和原数据行数一致的布尔序列,和变速箱类型判断的布尔序列用&合并后,即可正确筛选出符合要求的行,最终提取model列即可。注意两个布尔条件必须用小括号包裹,避免运算符优先级导致的计算错误。

内容的提问来源于stack exchange,提问作者Hala Abbas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:27:01