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

如何用numpy/pandas从参考表中批量匹配十万级(a,b)对的对应m,n值

解决方案

方案1:pandas实现(推荐,可读性和性能兼顾)

pandas的merge操作底层做了大量性能优化,10万级查询毫秒级即可完成,代码在3行以内:

import pandas as pd
table_df = pd.DataFrame(table, columns=['a', 'b', 'm', 'n'])
query_df = pd.DataFrame(my_list, columns=['a', 'b'])
results = query_df.merge(table_df, on=['a', 'b'], how='left')[['m', 'n']].values

也可以压缩为单行实现:

results = pd.DataFrame(my_list, columns=['a','b']).merge(pd.DataFrame(table, columns=['a','b','m','n']), on=['a','b'], how='left')[['m','n']].values

方案2:纯numpy实现

如果不想引入pandas依赖,可以用numpy的广播机制实现,性能同样远高于原生for循环:

import numpy as np
match_mask = (table[:, np.newaxis, :2] == my_list).all(axis=2)
results = table[match_mask.argmax(axis=0), 2:]

补充说明

如果存在my_list里的(a,b)对不在参考表中的情况,pandas方案会返回NaN,numpy方案默认返回第一行的结果,可根据业务需求额外添加缺失值校验逻辑;两种方案都自动支持my_list中的重复(a,b)对,和需求给出的for循环逻辑完全等效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:45:07