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

Python DataFrame求和异常排查:SQLite导入数据计算错误

问题定位与修正方案

1. System列填充逻辑错误

你当前的代码存在两处赋值错误,导致system列没有正确用对应行的iccid填充:

  • 第一处代码使用了.iloc[0],会把所有system == 'Nicht benannt!'的行都替换成第一行匹配的iccid,而非当前行的iccid;
  • 第二处代码结尾只写了.iloc(未指定索引),这会返回整个Series,赋值逻辑完全错误。

修正后的填充代码:

# 用对应行的iccid填充空或指定值的system列
df.loc[df['system'].isin(['Nicht benannt!', '']), 'system'] = df['iccid']

2. 分组求和的潜在问题

你的分组求和代码groupby('system').sum(numeric_only=False)存在两个风险:

  • numeric_only=False会尝试对非数值列(如iccid、last_updated)执行求和操作,这会导致非预期的字符串拼接或错误;
  • 由于之前system列填充错误,可能导致多个不同iccid的行被分到同一个system组下,最终求和时把无关行的日期列数值累加,这就是你例子中总用量远大于实际值的核心原因。

如果需要按system分组统计总用量,修正后的分组求和代码:

# 仅对日期列(数值型)求和
grouped = df.groupby('system')[data_columns].sum()
# 添加data_usage列,为每组日期列的总和
grouped['data_usage'] = grouped.sum(axis=1)

3. 行级data_usage的正确写法

如果需求是为每一行计算日期列的总和并生成data_usage列,无需分组,直接用:

df['data_usage'] = df[data_columns].sum(axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:22:07