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

合并两个DataFrame时如何让ID列连续,重复ID如何顺延替换?

pandas合并DataFrame实现ID列连续不重复方案

假设你待合并的两个DataFrame分别为df1(第一个原始表)、df2(第二个副本表),ID列的列名为ID,可按以下步骤实现需求:

核心实现逻辑

  1. 先取df1中ID的最大值
  2. 将df2的所有ID值整体偏移,首行ID刚好等于df1最大ID+1
  3. 合并两个表即可

完整代码示例

基础方案(保留df2内部ID的相对差值)

如果需要保留df2原ID的相对大小关系,用该方案:

import pandas as pd

# 示例数据构造(实际使用时替换为你自己的df1、df2即可)
df1 = pd.DataFrame({
    "ID": range(1, 46), # 模拟df1最后一行ID为45
    "col1": [f"data_{i}" for i in range(1, 46)]
})
df2 = df1.copy() # 模拟第二个表是第一个的副本

# 核心处理逻辑
max_id_df1 = df1["ID"].max()
df2["ID"] = df2["ID"] + max_id_df1

# 合并,ignore_index=True保证索引连续
merged_df = pd.concat([df1, df2], ignore_index=True)

优化方案(保证合并后ID完全连续无断层)

如果df2原ID可能存在断层,需要合并后ID完全连续递增,直接为df2重新生成ID即可:

max_id_df1 = df1["ID"].max()
# 直接生成从max_id_df1+1开始的连续ID
df2["ID"] = range(max_id_df1 + 1, max_id_df1 + 1 + len(df2))

merged_df = pd.concat([df1, df2], ignore_index=True)

效果验证

执行以下代码可验证结果是否符合要求:

# 验证ID是否严格递增
print("ID是否严格递增:", merged_df["ID"].is_monotonic_increasing)
# 验证ID是否无重复
print("ID是否无重复:", merged_df["ID"].nunique() == len(merged_df))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:45:03