如何以英文逗号为分隔符拆分数据集单列多值并展开行?
拆分多值列的实现方案
以下是几种不同场景下的可行实现方法:
方法1:Excel/Power Query(非编程场景)
适合日常办公用Excel处理数据的情况:
- 选中目标数据区域,切换到「数据」选项卡,点击「从表格/区域」(Excel 2016及以上版本支持)
- 在Power Query编辑器中,选中包含多值的B列,点击「转换」选项卡的「拆分列」→「按分隔符」
- 选择英文逗号作为分隔符,拆分方式选择「拆分为行」
- 完成后点击「关闭并上载」,即可得到拆分后的行式数据
方法2:Python Pandas(编程场景)
适合有编程基础,需要批量处理数据的情况:
import pandas as pd # 构造原始数据(也可通过read_csv等方法读取外部数据) data = { 'A:': [1, 2, 3], 'B:': ['A,B,C,D', 'E,F', 'G,H,I'], 'C:': ['Square', 'Triangle', 'Circle'] } df = pd.DataFrame(data) # 拆分B列并将列表展开为单独行 df = df.assign(**{'B:': df['B:'].str.split(',')}).explode('B:').reset_index(drop=True) # 输出结果 print(df)
方法3:SQL(数据库场景)
适合直接在数据库中处理表数据的情况,以MySQL为例:
WITH RECURSIVE split_data AS ( SELECT `A:` AS A_col, SUBSTRING_INDEX(`B:`, ',', 1) AS B_val, SUBSTRING(`B:`, LOCATE(',', `B:`) + 1) AS remaining_B, `C:` AS C_col FROM your_table WHERE `B:` IS NOT NULL AND `B:` != '' UNION ALL SELECT A_col, SUBSTRING_INDEX(remaining_B, ',', 1) AS B_val, SUBSTRING(remaining_B, LOCATE(',', remaining_B) + 1) AS remaining_B, C_col FROM split_data WHERE remaining_B IS NOT NULL AND remaining_B != '' ) SELECT A_col AS `A:`, B_val AS `B:`, C_col AS `C:` FROM split_data ORDER BY A_col;
如果是PostgreSQL,写法更简洁:
SELECT `A:`, unnest(string_to_array(`B:`, ',')) AS `B:`, `C:` FROM your_table ORDER BY `A:`;
内容的提问来源于stack exchange,提问作者CRB615
相关产品推荐
相关产品推荐

