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

在Python的for循环中使用.loc时如何实现向下取整?

问题描述

平时在DataFrame整列上使用apply(np.floor)可以正常将浮点数向下取整为整数,但在for循环中执行以下代码时:

f1.loc[today,'QuantityRounded'] = f1.loc[today,'QuantityNotRounded'].apply(np.floor)

出现错误:

AttributeError: 'numpy.float64' object has no attribute 'apply'

原因是通过loc[today, ...]取出的是单个numpy.float64标量值,而apply是Series/DataFrame专属的方法,标量对象没有这个属性。

解决方案
  • 直接对单个标量调用np.floor():
    既然拿到的是单个数值,不需要用apply,直接把数值传入np.floor即可:
    f1.loc[today,'QuantityRounded'] = np.floor(f1.loc[today,'QuantityNotRounded'])
    
  • 优先考虑批量处理(推荐):
    如果没有必须逐行循环的业务逻辑,直接对整列做批量处理效率更高,这也是你之前正常工作的方式:
    f1['QuantityRounded'] = f1['QuantityNotRounded'].apply(np.floor)
    
    还可以用更高效的向量化操作,完全替代apply:
    f1['QuantityRounded'] = np.floor(f1['QuantityNotRounded'])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:52:35