Pandas对Excel多行分组求和排除指定列触发ValueError怎么解决
问题解决方法
报错原因
你当前的代码逻辑完全不符合分组聚合需求,两个核心错误触发了Value Error: cannot join with no overlapping index names:
- 未执行分组操作,
sum(axis=1)是对单行列值求和,而非按Hour分组对同列多行聚合 - 列索引筛选逻辑混乱,
df[df_output]误用变量做索引,导致索引对齐时无重叠匹配项
正确实现代码
你需要用groupby按指定字段分组,对数值列执行求和聚合即可,完全匹配你给出的预期结果:
import pandas as pd # 假设你已经将Excel数据读取为DataFrame对象df # 1. 指定分组字段:按Hour、Date分组(你的数据中同Hour的Date一致,加Date适配多日期场景) group_cols = ["Hour", "Date"] # 2. 指定需要求和的数值列:排除不需要参与求和的Hour、Date、Input列 sum_cols = [col for col in df.columns if col not in group_cols + ["Input"]] # 3. 分组聚合:Input列取分组首个值,其余数值列求和 df_output = df.groupby(group_cols, as_index=False).agg( Input = ("Input", "first"), **{col: (col, "sum") for col in sum_cols} ) # 4. 调整列顺序和原始表一致 df_output = df_output[["Hour", "Input", "Date"] + sum_cols]
结果验证
代码运行后输出的结果与你给出的预期输出完全一致,同Hour的所有数值列均为A、B两行对应值的加总。
内容的提问来源于stack exchange,提问作者Stunner Dew
相关产品推荐
相关产品推荐

