Pandas非time列求和结果异常,请求排查操作问题
排查Pandas求和结果不正确的问题
嘿,我帮你梳理下这个求和异常的问题,大概率是重复列名在搞鬼!
先看你给出的DataFrame末尾行,能发现non_negative_derivative_x和non_negative_derivative_y各出现了两次——这种重复列名会让Pandas在计算行求和时逻辑混乱,导致结果不符合预期。
解决步骤:
1. 先确认列名重复情况
执行下面的代码,把所有列名打印出来,明确重复的列:
print(df_merged.columns.tolist())
2. 处理重复列名
根据你的数据情况选一种方式:
- 如果重复列是冗余数据(比如合并时误添加的重复列),直接保留每列的第一个实例,删除后续重复项:
df_merged = df_merged.loc[:, ~df_merged.columns.duplicated()] - 如果重复列是不同的有效数据,给它们重命名区分:
from collections import defaultdict col_counter = defaultdict(int) new_column_names = [] for col in df_merged.columns: col_counter[col] += 1 if col_counter[col] > 1: new_column_names.append(f"{col}_{col_counter[col]}") else: new_column_names.append(col) df_merged.columns = new_column_names
3. 重新计算行求和
处理完列名后,再执行你的求和代码,此时结果应该就正确了:
df_merged['bps'] = df_merged.drop('time', axis=1).sum(axis=1)
验证结果
你可以手动计算示例行的数值来核对:10574.72 + 5.19642e+09 + 5.78985e+09 ≈ 1.098627457472e+10,对比Pandas计算出的bps值是否一致。
内容的提问来源于stack exchange,提问作者Cmarv
相关产品推荐
相关产品推荐

