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
相关产品推荐
相关产品推荐

