You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除pandas DataFrame循环拼接时产生的重复列

解决方案
  • 首先推荐你优先使用列表缓存+一次性生成DataFrame的方案,从根源避免循环拼接的列异常问题,同时大幅提升大数据量下的处理性能:
import pandas as pd

# 初始化空列表存储每行数据
data_buffer = []
for _ in 你的迭代逻辑:
    # 每次迭代生成1~2行数据,以字典/Series格式存入缓存列表
    # 示例行数据结构,按你的实际业务替换
    row_data = {
        "ID": 1001,
        "Nom. value": -857,
        0: -856.989,
        1: -857.042
    }
    data_buffer.append(row_data)

# 迭代结束后一次性转换为DataFrame
result_df = pd.DataFrame(data_buffer)
  • 如果你必须在循环内逐次拼接DataFrame,用以下逻辑规避重复列问题:
  1. 初始化主DataFrame时先固定所有列名,每次生成的临时待拼接DataFrame强制对齐主表列名
  2. 拼接时指定行方向(axis=0),避免错误按列拼接导致列数异常
import pandas as pd

# 初始化主表,提前定义所有列名
main_df = pd.DataFrame(columns=["ID", "Nom. value", 0, 1])

for _ in 你的迭代逻辑:
    # 生成临时数据后强制对齐主表列名
    temp_df = pd.DataFrame(你的临时1~2行数据, columns=main_df.columns)
    # 行方向拼接
    main_df = pd.concat([main_df, temp_df], axis=0, ignore_index=True)
  • 如果你需要对已经生成的带重复列的DataFrame做修复,执行以下代码即可得到目标格式:
# 转置后删除值重复的列,再转置回原结构
df = df.T.drop_duplicates().T
# 重新命名数值列按0、1、2...顺序编号
df.columns = ["ID", "Nom. value"] + list(range(len(df.columns)-2))

内容的提问来源于stack exchange,提问作者GuillermoDC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:21:01