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

如何在含非数值列的Pandas DataFrame中按逻辑执行行减法?

解决Pandas DataFrame按指定逻辑行减法的问题

单组行计算(第一行减第二行)

如果只需要计算第一行和第二行的Qtd列差值,直接定位行索引取值相减即可,完全不影响其他非数值列:

# 假设你的DataFrame名为df
result = df.loc[0, 'Qtd'] - df.loc[1, 'Qtd']

所有相邻行批量计算(前一行Qtd减后一行Qtd)

如果要给每一行生成对应的差值(最后一行因无后续行结果为NaN),单独对Qtd列处理后合并回原DataFrame:

# 新增差值列,当前行Qtd减去下一行Qtd
df['Qtd_diff'] = df['Qtd'] - df['Qtd'].shift(-1)

这种方式仅处理数值型的Qtd列,其他非数值列不受任何影响,不会出现全表NaN的情况。

替代diff()的优化思路

你之前用的diff()默认是后行减前行,且会作用于全表,导致非数值列变为NaN、首行结果为NaN。如果一定要用diff(),可以单独针对Qtd列反向处理:

# diff()得到行i - 行i-1,取负后转为行i-1 - 行i,再shift(-1)对齐位置
df['Qtd_diff'] = -df['Qtd'].diff().shift(-1)

不过这种方法不如直接用shift(-1)直观,更推荐前面的批量计算方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:06:37