合并两个DataFrame时如何让ID列连续,重复ID如何顺延替换?
pandas合并DataFrame实现ID列连续不重复方案
假设你待合并的两个DataFrame分别为df1(第一个原始表)、df2(第二个副本表),ID列的列名为ID,可按以下步骤实现需求:
核心实现逻辑
- 先取
df1中ID的最大值 - 将
df2的所有ID值整体偏移,首行ID刚好等于df1最大ID+1 - 合并两个表即可
完整代码示例
基础方案(保留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
相关产品推荐
相关产品推荐

