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

在Pandas DataFrame中计算相邻行差值并存储到新列的问题

解决方法

直接用Pandas内置的diff()方法,一行代码就能完成需求,比写循环高效太多:

db['diff'] = db['ts'].diff()

这个方法会自动计算每一行与前一行的差值,第一行因为没有前一行数据,结果会是NaN。如果需要给第一行设置特定值(比如0),可以补充填充操作:

db['diff'] = db['ts'].diff().fillna(0)
循环代码的问题

你当前的循环每次执行db['diff'] = db['ts'][i+1] - db['ts'][i]时,是把整个diff列都替换成当前单次计算的差值,而不是给对应行赋值。循环结束后,diff列只会保留最后一次循环的计算结果,自然无法得到逐行的差值。如果非要用循环(不推荐,大数据量下效率极低),得改成给对应行赋值:

for i in np.arange(len(db)-1):
    db.loc[i+1, 'diff'] = db['ts'][i+1] - db['ts'][i]
# 手动设置第一行的diff值,比如设为0
db.loc[0, 'diff'] = 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:57:10