Python如何用for循环计算Pandas DataFrame指定年份剩余单位数量
问题原因
原有代码存在两个核心错误:
- 循环变量
i为年份字符串格式(如"1976"),无法直接通过i-1运算获取上一年对应列 - 未处理年份列中的NaN值:无扣除量的行当年应直接继承上一年剩余量,无需做减法运算
修复后的代码(保留for循环逻辑)
import pandas as pd # 提取所有年份列,转成整数后排序 year_list = df.columns[2:].astype(int).tolist() # 单独提取扣除量表,填充NaN为0避免运算错误,不修改原数据 deduct_data = df[df.columns[2:]].fillna(0) # 计算首年剩余量 = 初始总量 - 首年扣除量 first_col = str(year_list[0]) df[first_col] = df['Freq'] - deduct_data[first_col] # 遍历后续年份计算剩余量 for i in range(1, len(year_list)): curr_col = str(year_list[i]) prev_col = str(year_list[i-1]) df[curr_col] = df[prev_col] - deduct_data[curr_col]
运行后即可得到你期望的输出结果。
内容的提问来源于stack exchange,提问作者Jaroslav Kotrba
相关产品推荐
相关产品推荐

