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

如何高效查找DataFrame中Make-Model绑定的Year缺失组合?

高效查找DataFrame中缺失的Make-Model-Year有效组合

核心思路

先提取所有有效绑定的Make-Model配对,再为每个配对生成完整的年份范围(2010-2013),最后通过与原数据集做差集,快速定位缺失的组合。全程使用Pandas向量化操作,避免低效循环和无效跨组合生成。

解决方案代码

import pandas as pd

# 示例数据
data = [['nissan', 'altima', 2010], ['nissan', 'altima', 2011], ['nissan', 'altima', 2012], 
        ['chevy', 'silverado', 2013], ['chevy', 'silverado', 2011], ['chevy', 'silverado', 2012]]
df = pd.DataFrame(data, columns=['make', 'model', 'year'])

# 步骤1:获取唯一的Make-Model有效配对(确保不生成跨组合)
make_model_pairs = df[['make', 'model']].drop_duplicates()

# 步骤2:生成完整的年份范围(已知为2010-2013)
full_years = pd.DataFrame({'year': range(2010, 2014)})

# 步骤3:交叉连接生成所有有效组合(仅配对合法的Make-Model与年份)
make_model_pairs['key'] = 1
full_years['key'] = 1
all_valid = make_model_pairs.merge(full_years, on='key').drop('key', axis=1)

# 步骤4:找出缺失的组合
missing = all_valid.merge(df, on=['make', 'model', 'year'], how='left', indicator=True)
missing = missing[missing['_merge'] == 'left_only'].drop('_merge', axis=1)

print(missing)

运行结果

make      model  year
3   nissan     altima  2013
4    chevy  silverado  2010

方法优势

  • 完全依赖Pandas内置优化的向量化操作,避免了遍历数千个元素的低效循环,适配大规模数据集。
  • 仅基于真实存在的Make-Model配对生成组合,不会出现Nissan Silverado这类无效条目。
  • 用merge的indicator参数做差集计算,比逐行检查isin的性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:47:43