如何将数据框中逗号分隔的因子拆分为哑变量列?(支持R/Python/Power BI)
拆分逗号分隔因子为哑变量列的解决方案
下面针对Python、R、Power BI分别提供实现方法,满足将逗号分隔的因子拆分至独立列、无对应因子单元格留空的需求:
Python(Pandas)
使用pandas的str.get_dummies方法快速生成哑变量,可将0替换为空字符串以符合留空要求:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ '饮品类型': ['伏特加', '金酒', '威士忌'], '消费场景': ['At a pub, At home', 'At home', 'At a pub, Outdoor'] }) # 按逗号拆分并生成哑变量,将0替换为空 dummies = df['消费场景'].str.get_dummies(sep=', ').replace(0, '') # 合并回原数据集 final_df = pd.concat([df, dummies], axis=1) print(final_df)
R(tidyverse)
借助tidyverse工具链的separate_rows和pivot_wider实现行转列,空值直接留空:
library(tidyverse) # 构造示例数据 df <- tibble( 饮品类型 = c('伏特加', '金酒', '威士忌'), 消费场景 = c('At a pub, At home', 'At home', 'At a pub, Outdoor') ) # 拆分因子到行,再转宽为列并留空无对应值的单元格 final_df <- df %>% separate_rows(消费场景, sep = ', ') %>% mutate(标记 = 1) %>% pivot_wider(names_from = 消费场景, values_from = 标记, values_fill = '') print(final_df)
Power BI
通过Power Query可视化操作完成拆分:
- 加载数据后进入Power Query编辑器,选中目标列(如「消费场景」)。
- 点击「转换」选项卡 → 「拆分列」→ 「按分隔符」,选择逗号,勾选「拆分为行」。
- 添加自定义列(命名为「标记」),值设为
1。 - 选中「饮品类型」「消费场景」「标记」列,点击「转换」→ 「透视列」,值列选择「标记」,高级选项选「不要聚合」,空值保留为空。
- 关闭并应用,即可得到拆分后的哑变量列。
内容的提问来源于stack exchange,提问作者Ricards Agapovs
相关产品推荐
相关产品推荐

