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

如何在Pandas中跨索引计算DOH列:Inventory除以+1索引的OUT

跨索引实现DataFrame列除法的正确方法

针对你需要将Inventory列与OUT列进行跨索引除法的需求,以下是两种对应不同业务逻辑的正确实现方式:

场景1:当前行Inventory除以下一行OUT

如果需求是DOH[i] = Inventory[i] / OUT[i+1](比如索引0的DOH用Inventory[0]除以索引1的OUT),可以使用shift(-1)将OUT列向上平移一位,再执行除法:

df['DOH'] = df['Inventory'].div(df['OUT'].shift(-1))

场景2:上一行Inventory除以当前行OUT

如果需求是DOH[i] = Inventory[i-1] / OUT[i](即你例子中索引1的DOH用Inventory[0]除以OUT[1]),则使用shift(1)将Inventory列向下平移一位,再与OUT列做除法:

df['DOH'] = df['Inventory'].shift(1).div(df['OUT'])

代码说明

  • shift(n)方法用于将列数据按索引方向平移:shift(1)表示向下移动一行(当前行取上一行的值),shift(-1)表示向上移动一行(当前行取下一行的值)
  • div()方法是DataFrame的除法方法,会自动按索引对齐进行计算

关于你之前的错误代码

  • 第一段代码df['DOH']=df['Inventory'].div(df['OUT'])确实是同索引计算,不符合跨索引需求
  • 第二段代码df['DOH']=df['Inventory'].div(df.iloc['OUT '+1:])执行失败的原因是iloc接收的是整数位置索引,不能用字符串拼接的方式获取列,正确的列索引应该用df['OUT'],再结合shift实现平移

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:17:14