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

如何高效基于索引在零值Pandas Series指定位置填充数值?

高效填充Pandas指定索引位置的数值

你需要在全零的Series中,根据给定索引快速填充对应数值,原方法的concat+isin在大数据量下效率较低,以下是两种更高效的实现方式:

  • 方法1:使用Series.update()(原地修改,性能最优)
    update是Pandas专门用于按索引匹配更新值的方法,原地修改原Series,无需额外的拼接和排序操作,效率最高。如果需要保留原Series,先创建副本再操作:

    import pandas as pd
    
    dict_0 = {x: 0 for x in range(1, 11)}
    ser_0 = pd.Series(dict_0)
    
    dict_vals = {2:0.1, 5:0.9}
    ser_vals = pd.Series(dict_vals) 
    
    # 保留原ser_0的情况
    ser_composed = ser_0.copy()
    ser_composed.update(ser_vals)
    
  • 方法2:使用loc索引直接赋值
    复制原Series后,通过loc定位目标索引批量赋值,操作直观且性能优异:

    ser_composed = ser_0.copy()
    ser_composed.loc[ser_vals.index] = ser_vals
    

性能说明

这两种方法都基于Pandas的矢量操作和索引对齐特性,时间复杂度为O(n)(主要开销是复制Series和索引匹配)。而原方法的isin会生成布尔掩码,concat需要合并两个Series再排序,时间复杂度更高,在处理百万级以上数据时,性能差距会非常显著。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:48:25