Pandas中如何操作单个单元格实现列求和后自定义计算赋值
最佳实现方案
直接按以下步骤操作即可,不需要绕路取已追加行的数值,提前把求和值存为变量后续计算更高效:
- 替换原有append求和行的写法(pandas 2.0+版本已经移除
append方法,官方推荐用concat实现行追加,兼容所有新版环境),先把求和结果存为独立变量方便后续计算:
- 替换原有append求和行的写法(pandas 2.0+版本已经移除
import pandas as pd # 先计算数值列的求和结果,存为变量 sum_val_row = Askins.sum(numeric_only=True) # 把求和行追加到表中,这行就是你说的第31行(按行号从1开始计数的规则) Askins = pd.concat([Askins, pd.DataFrame([sum_val_row])], ignore_index=True)
- 代入公式计算目标值。把你要计算的指定列名替换到代码里即可,公式逻辑为「指定列的求和值 / 70000 * 10000」:
# 把引号里的内容替换成你实际要计算的列名 target_column = "你的目标列名称" calc_result = sum_val_row[target_column] / 70000 * 10000 # 如果你不需要取求和值,就是固定用45656.91做分子计算,直接写下面这行就行 # calc_result = 45656.91 / 70000 * 10000
- 把计算结果作为唯一内容追加到第32行。如果需要这行仅在目标列显示计算结果、其他列为空,用下面的写法:
# 构造仅目标列有值的新行 new_calc_row = pd.DataFrame([{target_column: calc_result}]) # 追加到表末尾,即为你需要的第32行 Askins = pd.concat([Askins, new_calc_row], ignore_index=True)
如果你需要这行的计算结果放在第一列、其他所有位置留空,直接用简化写法即可:
Askins.loc[len(Askins)] = None Askins.iloc[-1, 0] = calc_result
- 如果你用的是早于1.4版本的pandas,非要用原有
append写法,把上面的pd.concat部分替换成你原来的append逻辑即可,核心是提前把求和值存为变量,不用追加完再遍历取数。
内容的提问来源于stack exchange,提问作者max2lax
相关产品推荐
相关产品推荐

