在Pandas中按列名列表求和时触发KeyError: 'not in index'问题求助
解决DataFrame指定列求和的KeyError问题
问题根源
你的DataFrame列名是Col1、Col2这类首字母大写的格式,但求和列表sumlist里的列名是col2、col17全小写,大小写不匹配导致程序找不到对应列,触发KeyError。reset_index()是重置行索引的操作,和列名匹配问题无关,所以解决不了当前报错。
解决方案
方法1:统一求和列表的列名格式
把sumlist里的元素改成和DataFrame列名完全匹配的格式,比如用列表推导式将每个列名首字母大写:
sumlist = [col.capitalize() for col in sumlist] # 执行求和 df['total'] = df[sumlist].sum(axis=1)
方法2:统一DataFrame的列名为小写
如果后续经常需要动态指定列名,可以先把DataFrame的所有列名转成小写,从根源避免大小写冲突:
# 列名转小写 df.columns = df.columns.str.lower() # 直接用原sumlist求和 df['total'] = df[sumlist].sum(axis=1)
额外排查技巧
可以先检查求和列表里哪些列名不在DataFrame中,方便快速定位问题:
missing_cols = [col for col in sumlist if col not in df.columns] print("缺失的列名:", missing_cols)
内容的提问来源于stack exchange,提问作者Astrey
相关产品推荐
相关产品推荐

