如何解决Python对Excel读取矩阵求和时忽略第一列的问题?
解决pandas计算Excel矩阵列和时“忽略”第一列的问题
嘿,我明白你遇到的问题了——看着代码明明写了对所有列求和,但结果里好像第一列没被计算对吧?先帮你分析下原因,再给你两个可行的解决办法:
首先看你读取到的数据:
0 1 2 0 NaN 17.0 5 1 3.0 NaN 19 2 7.0 17.0 7
其实pandas并没有真的忽略第一列,它默认的sum()方法会自动跳过NaN值计算总和,所以第一列的实际求和结果是3.0 + 7.0 = 10.0。你觉得它被忽略,大概率是两种情况:要么你预期把NaN当作0来求和,要么你的第一列数据类型出了问题(比如Excel里第一列混了文本,导致pandas没识别成数值类型)。
办法1:确保数值类型正确,按默认规则求和
如果你的需求就是跳过NaN计算,那只需要先确认所有列都是数值类型,避免因为数据类型错误导致求和异常:
import pandas as pd data = pd.read_excel("data.xlsx", header=None) # 强制把所有列转为数值,无法转换的内容会变成NaN data = data.apply(pd.to_numeric, errors='coerce') # 现在再求和,三列的结果都会正常输出 print(data.sum(axis=0))
办法2:把NaN当作0来计算总和
如果你希望把所有NaN都视为0来求和(比如第一列总和是0 + 3 +7 =10,第二列是17+0+17=34),可以先填充NaN为0再求和:
import pandas as pd data = pd.read_excel("data.xlsx", header=None) # 填充NaN为0后再按列求和 print(data.fillna(0).sum(axis=0))
这两种方法都能让你得到三列的完整求和结果,选哪种就看你的实际需求啦~
内容的提问来源于stack exchange,提问作者ezzeddin
相关产品推荐
相关产品推荐

