python - 在 Python 中将分类值列转换为其统计值
问题描述
我有一个数据框,其示例如下所示。
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)
df
现在,我想为“性别”列中的每个值创建一列,如果该值存在于该行中,则新列应为“1”,否则为空。所需的最终表格如下所示。
不能使用 pd.get_dummies() 因为在许多行中有多个值(例如:'Non-binary, Transgender')。我想过对所有值进行手动硬编码,但想知道是否有办法自动化该过程。任何帮助是极大的赞赏。谢谢。
解决方案
使用Series.str.get_dummies
,它允许您在字符串中有多个值的情况下指定分隔符,然后将结果连接回来。
pd.concat([df, df['Gender'].str.get_dummies(',').add_prefix('Gender_')], axis=1)
ID Gender Gender_Man Gender_Non-binary Gender_Transgender Gender_Woman
0 A Man 1 0 0 0
1 B Woman 0 0 0 1
2 C Transgender 0 0 1 0
3 D Non-binary,Transgender 0 1 1 0
4 E Woman,Non-binary 0 1 0 1
5 F Man,Non-binary,Transgender 1 1 1 0
推荐阅读
- javascript - 动态大小的画布、侧面板和 flexbox 的溢出问题
- ios - UIToolBar 不使用屏幕的整个宽度
- java - android webview中网站右侧的额外空间
- html - 如何消除背景颜色周围的空白?
- node.js - 新手问题:如何使用这个 Node.Js Api?
- laravel - Laravel .ENV 可访问性?
- get - GET 请求通过 PostMan 成功,但通过 Spring RestTemplate Exchange 方法调用提供 308 永久重定向
- c++ - C++ | GNU/Linux 上的左键检测
- javascript - 在 Nestjs APi 中刷新令牌的最有效方法是什么
- javascript - 按下键时声音元素不播放