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

逐行创建pandas DataFrame,哪种实现方式效率更高?

百万条API数据转DataFrame:哪种方法效率最高?

我需要从API逐行下载超百万条数据并转为pandas DataFrame,目前的做法是先创建列表,把所有数据追加到列表后再转成DataFrame(示例代码如下)。想请教:

  • 直接创建DataFrame后逐行用append/concat
  • 用numpy ndarray转DataFrame
  • 当前的列表追加后转DataFrame
    这三种方式哪种更快?我感觉当前的列表方法效率更高,这个判断对吗?

示例代码:

data_list = []
requested_data = (API CALL HERE)
for x in requested_data:
    data_list.append(x)
data_df = pd.DataFrame(data_list)

结论先行

你的判断完全正确——先收集所有数据到列表再一次性转DataFrame是效率最高的方式,另外两种方法的速度会慢很多,尤其是百万级数据量下差距会非常明显。

为什么列表法最快?

  • 列表是Python原生数据结构,append操作的均摊时间复杂度是O(1),几乎没有额外开销,就是单纯的内存数据追加。
  • pandas的DataFrame是带索引、列类型等元数据的复杂结构,逐行append/concat本质上每次都要新建一个DataFrame,要处理索引对齐、类型校验、内存重新分配等额外操作,百万次循环下来,这些累加的开销会让速度慢几十甚至上百倍。
  • 用numpy ndarray中转的话,虽然ndarray内存是连续的,但如果逐行添加,同样要面临内存扩容的问题(除非提前知道数据长度预分配内存),而且多了列表转ndarray的步骤,效率反而不如直接列表转DataFrame。

额外优化建议

如果API支持批量请求,尽量别逐行下载——哪怕一次拉取1000条再追加到列表,也比逐行拉取快得多,毕竟网络请求的开销往往比本地数据处理更大。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:35:00