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

按指定顺序从Pandas DataFrame中提取对应labels值的高效方法

按指定文件名列表顺序提取Pandas DataFrame对应labels的高效实现方法

首先修正示例代码的小疏漏:构造dat数组时文件名漏写了.分隔符,和mylist、输出示例的文件名格式不匹配,修正后的构造代码为:

dat = np.array([(1, 2, 1, 1, 2, 2), ('a2.jpeg', 'a1.jpeg', 'c2.jpeg', 'b2.jpeg', 'b1.jpeg' , 'c1.jpeg')])

最高效实现方案

优先使用Pandas内置的set_index+reindex方案,依托Pandas索引的哈希查找特性,时间复杂度为O(n),远优于遍历匹配、条件筛选等实现,小数据量和百万级以上大数据量场景下性能表现都极佳:

# 核心实现(输出结果按mylist顺序排列)
res = df.set_index('filenames').reindex(mylist)['labels'].astype(int).tolist()

示例运行后得到的res结果为[2, 1, 2, 1, 2, 1],完全匹配mylist的顺序要求。

扩展优化

  • 若存在mylist内的文件名不在df的filenames列中的情况,可指定填充值避免报错:
    # 未匹配到的项填充默认值-1
    res = df.set_index('filenames').reindex(mylist, fill_value=-1)['labels'].astype(int).tolist()
    
  • 若偏好Python原生操作,也可以先构造映射字典再推导生成列表,性能同样优异:
    label_map = df.set_index('filenames')['labels'].to_dict()
    res = [int(label_map[name]) for name in mylist]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:36:02