You need to enable JavaScript to run this app. 如何拆分存储单/多值混合数据的列,实现每条仅含单一值
优惠活动
大模型
产品
解决方案
定价
更多

如何拆分存储单/多值混合数据的列,实现每条仅含单一值

多值列拆分方案

以下是不同工具场景下的实现方法:

Excel/WPS 表格操作

  • 选中Name列,依次点击顶部菜单栏「数据」-「分列」,分隔符选择「逗号」,完成后得到多列拆分后的Name值
  • 全表进入Power Query编辑器(Excel:数据>从表格/区域;WPS:数据>表格转换>PowerQuery编辑器)
  • 按住Ctrl选中所有拆分后的Name列,右键选择「逆透视列」,即可得到单行单值的结果,其余列数据会自动关联匹配
  • 退出编辑器并将结果加载回表格即可

Python Pandas 实现

直接调用split+explode方法即可完成拆分,示例代码如下:

import pandas as pd

# 读取你的数据,下方为示例构造数据
df = pd.DataFrame({
    "Name": ["A", "B,A", "c", "D,G"],
    "New Name": ["A", "B", "A", "C"]
})

# 拆分多值列并展开为单行单值
df["Name"] = df["Name"].str.split(",")
df = df.explode("Name", ignore_index=True)

# 处理后结果可直接导出为csv/excel格式
print(df)

运行后得到的处理结果如下:

NameNew Name
AA
BB
AB
cA
DC
GC

SQL 实现(适配MySQL8.0+、PostgreSQL等支持递归CTE的数据库)

WITH RECURSIVE split_result AS (
    SELECT 
        -- 截取第一个分隔值
        SUBSTRING_INDEX(Name, ',', 1) AS Name,
        `New Name`,
        -- 剩余未拆分的内容
        SUBSTRING(Name, LENGTH(SUBSTRING_INDEX(Name, ',', 1)) + 2) AS rest_content
    FROM 你的表名
    UNION ALL
    SELECT 
        SUBSTRING_INDEX(rest_content, ',', 1) AS Name,
        `New Name`,
        SUBSTRING(rest_content, LENGTH(SUBSTRING_INDEX(rest_content, ',', 1)) + 2) AS rest_content
    FROM split_result
    WHERE rest_content != ''
)
SELECT Name, `New Name` FROM split_result;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 10:36:04