全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何在 Pandas DataFrame 中仅对指定索引行应用向量化函数

本文介绍如何高效地将一个返回多值的自定义函数(如 `computeleft`)仅应用于 dataframe 的特定行索引,其余位置自动填充为 nan,避免全量计算,兼顾性能与可读性。

在实际数据处理中,我们常需对 DataFrame 的部分行(而非全部)执行复杂计算,并将结果写入多个列。例如,函数 computeLeft(i) 接收索引 i,返回长度为 4 的 NumPy 数组 [2i, 3i, 4i, 5i],期望将其结果分别填入 ["val1", "val2", "val3", "val4"] 四列中——但仅针对指定索引(如 [2, 5, 7, 8, 10])的行,其余行对应位置应保持为 NaN。

直接使用 np.vectorize 全量计算(如 df[results] = np.vectorize(...)(range(len(df))))虽可行,但效率低且不满足“按需计算”需求。更优解是:先初始化目标列为 NaN,再通过 .loc 精准赋值。具体步骤如下:

  1. 确保函数签名正确:computeLeft 应返回标准 NumPy 数组(非 Python list),并用 np.vectorize 显式声明输出形状(signature="()->(4)"):

    def computeLeft(i):
        return np.array([i*2, i*3, i*4, i*5])
    
    computeLeft_vec = np.vectorize(computeLeft, signature="()->(4)")
  2. 预分配目标列并填充 NaN

    results = ["val1", "val2", "val3", "val4"]
    df[results] = np.nan  # 所有行初始化为 NaN
  3. 使用 .loc 对指定索引批量赋值

    indices_to_change = [2, 5, 7, 8, 10]
    df.loc[indices_to_change, results] = computeLeft_vec(indices_to_change)

    ✅ 关键点:indices_to_change 必须与 DataFrame 的实际索引标签(index labels)匹配(而非位置序号 iloc)。若 df.index 是默认整数索引(RangeIndex),则二者一致;若索引已重设(如字符串或非连续整数),请确保传入的是真实索引值。

⚠️ 注意事项: np.vectorize 本质是语法糖,不提升性能;若 computeLeft 可向量化(如纯算术运算),建议直接用 NumPy 原生向量化(例如 np.array(indices_to_change)[:, None] * [2,3,4,5]),速度可提升数十倍。 若需处理缺失索引(如 df 不含索引 7),.loc 会自动扩展 DataFrame(添加新行),若需严格限制仅修改现有索引,可先校验:valid_indices = [i for i in indices_to_change if i in df.index]。 替代方案(如 df.iloc + 位置映射)适用于基于整数位置的场景,但需额外转换索引→位置,易出错,推荐优先使用 .loc 配合语义清晰的索引标签。

此方法简洁、安全、符合 Pandas 惯例,既避免冗余计算,又保证结果的稀疏性与可维护性。


# python 


相关文章: 建站之星代理商如何保障技术支持与售后服务?  如何配置FTP站点权限与安全设置?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何用wdcp快速搭建高效网站?  建站主机如何选?高性价比方案全解析  网站制作服务平台,有什么网站可以发布本地服务信息?  专业公司网站制作公司,用什么语言做企业网站比较好?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何在腾讯云免费申请建站?  建站主机选哪种环境更利于SEO优化?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  寿县云建站:智能SEO优化与多行业模板快速上线指南  重庆网站制作公司哪家好,重庆中考招生办官方网站?  高防服务器租用指南:配置选择与快速部署攻略  制作门户网站的参考文献在哪,小说网站怎么建立?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  如何快速查询网址的建站时间与历史轨迹?  表情包在线制作网站免费,表情包怎么弄?  如何通过山东自助建站平台快速注册域名?  网页设计与网站制作内容,怎样注册网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  宝塔新建站点报错如何解决?  常州自助建站工具推荐:低成本搭建与模板选择技巧  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  如何在IIS中新建站点并解决端口绑定冲突?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  临沂网站制作公司有哪些,临沂第四中学官网?  做企业网站制作流程,企业网站制作基本流程有哪些?  广州建站公司哪家好?十大优质服务商推荐  如何解决ASP生成WAP建站中文乱码问题?  建站上传速度慢?如何优化加速网站加载效率?  javascript中对象的定义、使用以及对象和原型链操作小结  如何通过VPS搭建网站快速盈利?  如何在IIS中新建站点并配置端口与物理路径?  建站之星多图banner生成与模板自定义指南  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何通过万网虚拟主机快速搭建网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  定制建站方案优化指南:企业官网开发与建站费用解析  XML的“混合内容”是什么 怎么用DTD或XSD定义  如何设计高效校园网站?  建站之星如何一键生成手机站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。