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

如何用Python拆分含重复ID的列?寻求解决思路

单列拆分(含重复ID)的解决方法

以下是不同工具下的具体实现思路,你可以根据自己的使用场景选择:

Excel 操作方案

  • 第一步:给重复ID添加分组序号
    在空白辅助列输入公式:=COUNTIF($A$2:A2,A2)(假设ID列是A列,从第2行开始),下拉填充后,每个重复的ID会按出现顺序生成1、2、3...的序号。
  • 第二步:拆分列
    • 第一列(提取每个ID的首次出现值):=IF(B2=1,A2,"")(B列为辅助列)
    • 第二列(提取每个ID的后续出现值):=IF(B2>1,A2,"")
      最后可以用筛选去掉空行,或者直接用透视表:将ID拖入行区域,值区域也拖入ID,设置值汇总方式为“计数”,然后转置透视表即可快速拆分。

Python Pandas 方案

如果用代码处理,先给每个ID分组编号,再进行透视拆分:

import pandas as pd

# 读取数据
df = pd.read_excel("你的数据文件.xlsx")  # 或pd.read_csv读取csv文件

# 给每个ID的重复项添加序号
df['seq'] = df.groupby('ID').cumcount() + 1

# 拆分列(假设每个ID最多重复2次)
split_df = df.pivot(index=df.index // 2, columns='seq', values='ID').reset_index(drop=True)
split_df.columns = ['ID_列1', 'ID_列2']

# 输出结果
print(split_df)

如果每个ID的重复次数不固定,也可以用groupby聚合后拆分:

split_df = df.groupby('ID')['ID'].apply(list).apply(pd.Series).reset_index()

SQL 方案(以MySQL为例)

利用窗口函数给ID分组编号,再通过条件判断拆分:

SELECT 
    CASE WHEN row_num = 1 THEN ID ELSE NULL END AS ID_col1,
    CASE WHEN row_num = 2 THEN ID ELSE NULL END AS ID_col2
FROM (
    SELECT 
        ID,
        ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS row_num
    FROM your_table
) AS temp_table

如果需要将同一ID的重复值放在同一行,可以用自连接实现:

SELECT 
    t1.ID AS ID_col1,
    t2.ID AS ID_col2
FROM your_table t1
LEFT JOIN your_table t2 
    ON t1.ID = t2.ID 
    AND t1.id <> t2.id  # id为表的主键或唯一标识列
WHERE t1.row_num = 1

结合你提供的场景图,可根据实际数据的重复次数、使用工具调整上述方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:15:53