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

Pandas向DataFrame添加数据点速度过慢,有什么更快的实现方法?

性能瓶颈原因

你当前的逐行循环写法效率极低,核心问题有两点:

  • 每次循环都要对dataframe_var做全表扫描匹配Alias对应的行索引,整体时间复杂度为O(n²),数据规模稍大就会产生巨量冗余计算
  • 循环内逐次给DataFrame新增列、单值赋值的操作,会触发pandas频繁的内存重分配和拷贝,额外开销远大于计算本身
高效实现方法

用pandas内置的向量化操作替代Python层循环,全程无逐行迭代,处理中等规模数据集可以把耗时从数小时压缩到毫秒级,代码如下:

import pandas as pd

# 透视生成行列映射宽表:行为Alias,列为TS_ns,值为对应VALUE_NUMBER,自动填充缺失值为NaN
pivot_table = file_data.pivot(index="Alias", columns="TS_ns", values="VALUE_NUMBER")

# 和原有DataFrame按Channel对齐,保留原有Channel的行顺序
dataframe_var = dataframe_var.merge(
    pivot_table,
    left_on="Channel",
    right_index=True,
    how="left"
)

# 对时间列按数值大小升序重排
time_columns = sorted(
    [col for col in dataframe_var.columns if col != "Channel"],
    key=lambda x: float(x)
)
dataframe_var = dataframe_var[["Channel"] + time_columns]

补充说明

  • 如果你提供的示例里Name_1对应值0.116要转成116000是真实业务需求,只需要在透视前加一行file_data["VALUE_NUMBER"] = file_data["VALUE_NUMBER"] * 1e6即可
  • 如果存在同一个Alias同一个TS_ns对应多条数据的情况,把pivot替换成pivot_table,指定聚合函数即可,比如pivot_table(index="Alias", columns="TS_ns", values="VALUE_NUMBER", aggfunc="first")
  • 该实现的性能提升幅度在10000倍以上,百万行级数据也能在数秒内完成计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:15:41