Python反向累积求和:将列底部值设为0的问题求助
解决反向累积求和时最后一行设为0的问题
你的代码已经实现了反向累积求和的核心逻辑,只需要小调整就能把最后一行的值设为0,这里给你几种简单可行的方案:
方案1:直接修改最后一行
先按原有逻辑生成反向累加列,再定位到最后一行将其设为0:
df2['cumsum_reverse'] = df2.loc[::-1, 'OS for the month'].cumsum()[::-1] # 把目标列的最后一行设为0 df2.iloc[-1, df2.columns.get_loc('cumsum_reverse')] = 0
方案2:用shift调整累加结果
在反向累加后,通过shift()将结果整体下移一位,反转回来后最后一行会变成NaN,再用fillna(0)填充为0,一步到位:
df2['cumsum_reverse'] = df2.loc[::-1, 'OS for the month'].cumsum().shift()[::-1].fillna(0)
方案3:排除最后一行再累加
先对除最后一行外的数据做反向累加,再拼接一个值为0的行,确保最后一行直接是0:
import pandas as pd # 处理前n-1行的反向累加 reverse_cumsum = df2['OS for the month'].iloc[:-1][::-1].cumsum()[::-1] # 拼接最后一行的0,保持索引一致 df2['cumsum_reverse'] = pd.concat([reverse_cumsum, pd.Series([0], index=[df2.index[-1]])])
这几种方法都能达到你想要的效果,选哪种看你的代码习惯就行。
内容的提问来源于stack exchange,提问作者Brian Michaels
相关产品推荐
相关产品推荐

