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

如何优化通过dataframe.loc操作向列表追加数据的运行速度

问题分析与优化方案

原来的代码耗时高的核心原因是存在O(n²)的时间复杂度:你遍历每一行的时候,都对整个DataFrame做了一次全表匹配查找df.name==i,2万行数据就要执行2万次全表扫描,自然耗时极高。

你可以直接用pandas内置的向量化操作实现需求,完全不需要自己写循环,以下是两种可直接使用的实现:

  • 方案1:使用drop_duplicates(最简洁,性能最优)
    drop_duplicates默认保留每个唯一值的第一个出现项,直接取对应索引即可:
# 直接得到每个唯一name首次出现的索引列表
mylist = df.drop_duplicates(subset='name', keep='first').index.tolist()
# 如果需要集合格式,直接套set()即可
# mylist = set(mylist)
  • 方案2:使用groupby + head(适合需要同步做其他分组计算的场景)
    如果后续还要对每个name分组做其他统计,可以用这个方法同步获取首次出现行的索引:
mylist = df.groupby('name', group_keys=False).head(1).index.tolist()

两种方案在2万行的数据集上运行时间都不会超过10毫秒,相比原来的写法性能提升至少600倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:54:07