You need to enable JavaScript to run this app. pandas按给定条件匹配行后对指定数值列求和结果为0的问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

pandas按给定条件匹配行后对指定数值列求和结果为0的问题咨询

异常原因及解决方案

异常原因

  • 列名拼写不一致:示例表格中目标筛选列的列名为Initiator,但代码中使用的列名是Initiateur,拼写不匹配会导致筛选条件命中0行数据,求和结果自然为0。
  • 列值存在干扰字符:若Initiator列中存储的Glovoapp前后存在空格、大小写不匹配(如 Glovoapp、glovoapp),也会导致等值判断失败,无法命中有效行。
  • Price列数据类型异常:若Price列被识别为字符串类型,求和运算无法正常执行,也可能返回0结果。

解决方法

  • 首先核对实际列名,执行print(new_data.columns)输出数据集的所有列名,将代码中的列名修正为真实的筛选列名:
# 假设实际列名为Initiator,修正后代码如下
montant_init = new_data.loc[new_data['Initiator'] == 'Glovoapp', 'Price'].sum()
  • 若列名无误,可执行print(new_data['Initiator'].unique())查看该列的所有唯一取值,确认是否有多余字符或大小写问题,可通过标准化处理后再匹配:
# 去除两端空格+转小写后再做等值判断,规避格式干扰
montant_init = new_data.loc[new_data['Initiator'].str.strip().str.lower() == 'glovoapp', 'Price'].sum()
  • 若为Price列类型问题,先将该列转换为数值类型后再求和:
import pandas as pd
# 转换Price列为数值类型,非法值转为空值
new_data['Price'] = pd.to_numeric(new_data['Price'], errors='coerce')
montant_init = new_data.loc[new_data['Initiator'] == 'Glovoapp', 'Price'].sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 15:45:03