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

如何更新DataFrame按索引末位分组求和并解决KeyError问题

错误原因

  • 内层循环逻辑错误:for x in df[i]遍历的是列的实际数值,而非行索引,将数值作为索引取值df[i][x]自然触发KeyError
  • 索引越界风险:即使修改为遍历索引,当索引≥1时,x+30等取值会超出原df 0-30的索引范围,同样会报错
  • 原数据修改问题:直接在原df上赋值修改,会导致后续计算使用已被覆盖的错误值,最终结果不符合预期

解决方法

最优方案(推荐)

直接使用pandas分组聚合能力,按索引末位(索引对10取模)分组求和,一行代码即可完成需求:

new_df = df.groupby(df.index % 10).sum()

该方法无需循环,自动完成同末位索引的行按列求和,最终输出的new_df索引为0-9,完全符合需求。

循环实现版本(如必须使用循环)

提前初始化结果容器,避免修改原数据:

import pandas as pd
import numpy as np

# 初始化结构和原df匹配的结果表,索引为0-9
new_df = pd.DataFrame(np.zeros((10, df.shape[1])), columns=df.columns)
for idx in range(10):
    # 取出所有末位为idx的行求和赋值
    new_df.loc[idx] = df.loc[[idx, idx+10, idx+20, idx+30]].sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:09:03