DataFrame列行值减除运算求助:最后一行结果为NA需修正
解决DataFrame最后一行计算值为NA的问题
核心思路
先通过偏移行的方式计算常规行的比例值,再手动替换最后一行的结果为-1,覆盖默认生成的NA值。
代码实现(以pandas为例)
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'ID': [1,2,3,4,5], 'Price': [20,18,21,16,19] }) # 计算(下一行Price - 当前行Price)/当前行Price df['Result'] = (df['Price'].shift(-1) - df['Price']) / df['Price'] # 替换最后一行的NA为-1 df.loc[df.index[-1], 'Result'] = -1 # 保留4位小数对齐示例格式 df['Result'] = df['Result'].round(4) print(df)
代码说明
df['Price'].shift(-1):将Price列整体上移一行,让当前行能直接匹配下一行的值做计算- 常规计算后最后一行因无后续数据会生成NA,通过
df.index[-1]定位最后一行,直接赋值为-1 round(4)用于统一结果的小数位数,和示例输出格式保持一致
运行后输出结果与示例完全匹配:
ID Price Result 0 1 20 -0.1000 1 2 18 0.1667 2 3 21 -0.2381 3 4 16 0.1875 4 5 19 -1.0000
内容的提问来源于stack exchange,提问作者Prad
相关产品推荐
相关产品推荐

