Pandas筛选指定行后对目标列求和出现list无sum属性报错如何解决
问题原因与修正方案
错误原因
你的代码存在2个语法问题:
loc索引的括号使用错误:pandas的loc筛选行+列的语法为df.loc[行筛选条件, 列筛选条件],所有参数都需要放在loc后的同一对方括号内,你提前关闭了loc的方括号,导致后续取值逻辑完全错乱- 列参数多套了一层列表:
colart2015本身已经是存储列名的列表,不需要再额外加方括号包裹,你多写的[]把它变成了嵌套的Python原生列表,最终调用.sum()的对象是这个列表,才会抛出'list' object has no attribute 'sum'的报错
修正后代码
# 选中需要求和的列 colart2015 = ['Column1', 'Column6', 'Column10'] # 仅对Year为2015的行,计算指定列的行求和结果,赋值给totalart字段 df_pivotms.loc[df_pivotms['Year'] == '2015', 'totalart'] = df_pivotms.loc[df_pivotms['Year'] == '2015', colart2015].sum(axis=1)
如果需要让非2015年的行totalart字段值为0而非NaN,可以在赋值后补充一行:
df_pivotms['totalart'] = df_pivotms['totalart'].fillna(0)
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

