如何避免index/level_0作为列被添加到Pandas DataFrame中?
解决方法
问题出在切片后生成的临时DataFrame会保留索引转换产生的额外列,加上函数重复运行时原数据可能已被污染,导致冗余列反复出现。
修正后的代码
# 提取奇偶行并直接丢弃原索引,避免生成额外列 even_rows = trade_logs[trade_logs.index % 2 == 0].reset_index(drop=True) odd_rows = trade_logs[trade_logs.index % 2 == 1].reset_index(drop=True) # 横向拼接,无需后续删除列操作 pos_log = pd.concat([even_rows, odd_rows], axis=1) return pos_log
额外排查点
如果问题仍存在,检查以下两点:
- 确保
trade_logs本身没有残留之前运行产生的index或level_0列,可在函数开头加入清理逻辑:trade_logs = trade_logs.drop(columns=['index', 'level_0'], errors='ignore') - 确认函数返回的
pos_log没有被后续代码重复执行索引重置或拼接操作。
内容的提问来源于stack exchange,提问作者a_l
相关产品推荐
相关产品推荐

