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

如何在Pandas中仅为最后一行设置日均损耗列(无需iloc/np.nan)

Pandas实现日均水位损失计算并指定行赋值

原始数据结构

Daywater levelAvg loss per day
1200NaN
2190NaN
3180NaN
4175NaN
5174NaN
6172NaN
7170(200-170)/7

需求说明

使“Avg loss per day”列除最后一行外均为空白值,最后一行的值计算为:(首行water level值 - 末行water level值) / 总天数,要求不使用iloc和np.nan实现。

此前错误代码

df['Avg loss per day']=(df['water level'].iloc[0]-df['water level'].iloc[6])/7
df = df.round({'Avg loss per day': 2})
df.loc[0:6,['Avg loss per day']]=np.nan

执行时出现“single indexer out of bounds”错误

解决方案代码

# 初始化列值为None(Pandas会自动识别为缺失值,替代np.nan)
df['Avg loss per day'] = None

# 通过Day列的数值特征定位首尾行,计算日均损失
first_water = df.loc[df['Day'] == 1, 'water level'].item()
last_day = df['Day'].max()
last_water = df.loc[df['Day'] == last_day, 'water level'].item()
avg_loss = (first_water - last_water) / last_day

# 给最后一行赋值并保留两位小数
df.loc[df['Day'] == last_day, 'Avg loss per day'] = round(avg_loss, 2)

代码说明

  1. 用None初始化目标列,避开np.nan的使用
  2. 借助Day列的明确数值(首行Day=1,末行Day为最大值)定位首尾行的水位数据,无需依赖iloc
  3. 仅对最后一行赋值,自然达成其他行为缺失值的效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:02:42