首页 > 解决方案 > 在 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')。我想过对所有值进行手动硬编码,但想知道是否有办法自动化该过程。任何帮助是极大的赞赏。谢谢。

标签: pythonpandasdataframedata-sciencedata-processing

解决方案


使用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

推荐阅读