Python中将含多值的分类列转换为对应统计标识列的实现方法
多值分类列自动生成哑变量的Pandas实现
你可以直接使用pandas字符串方法自带的str.get_dummies()实现需求,支持指定分隔符处理多值列,无需手动硬编码枚举所有取值:
import pandas as pd # 示例数据构建 data = {'ID':['A','B','C','D','E','F'], 'Gender':['Man', 'Woman', 'Transgender', 'Non-binary,Transgender', 'Woman,Non-binary', 'Man,Non-binary,Transgender']} df = pd.DataFrame(data) # 核心处理逻辑 # 按逗号拆分生成哑变量,将0替换为空字符串 gender_dummies = df['Gender'].str.get_dummies(sep=',').replace(0, '') # 拼接原数据与哑变量列 df_result = pd.concat([df, gender_dummies], axis=1) print(df_result)
代码说明
- 你之前尝试的
pd.get_dummies()是处理单列单值的场景,而Series.str.get_dummies(sep=',')专门适配多值分隔的字符串列,会自动识别所有独立取值生成对应哑变量列,对应行包含该取值则值为1,否则为0 replace(0, ''):将默认生成的0替换为空字符串,匹配你要求的「无对应取值则为空」的格式pd.concat:将原表的ID、Gender列和新生成的哑变量列拼接,得到的结果和你提供的最终效果完全一致
内容的提问来源于stack exchange,提问作者Shiva
相关产品推荐
相关产品推荐

