【问题标题】:How to pivot one colum with n categories into n binary values column?如何将具有 n 个类别的一列转换为 n 个二进制值列?
【发布时间】:2026-01-13 17:50:02
【问题描述】:

我有以下数据框:

id gender name ... status
1 M John ... Withdrawn
2 F Mary ... Pass
... ... ... ... ...
10 F Kate ... Fail

我想把它转换成这样的数据框:

id gender name ... Withdrawn Pass Fail
1 M John ... 1 0 0
2 F Mary ... 0 1 0
... ... ... ... ... ... ...
10 F Kate ... 0 0 1

使用pivot_table 之类的函数是否可以实现这样的事情,或者是否有必要编写一个函数然后遍历每一行并将一个值附加到相应的列?

【问题讨论】:

    标签: python dataframe pivot-table data-transform


    【解决方案1】:

    就像使用虚拟变量一样简单:

    df = pd.get_dummies(df, columns=['status'])
    df = df.drop(columns = ['status'])
    

    【讨论】:

    • 谢谢!之前没听说过get_dummies这个函数,感觉挺好用的。
    • 是的,它通常用于获得分类变量的优势。它将分类变量更改为 0 或 1 的变量,这使得机器学习任务可以轻松地根据这些分类值进行预测。 @Jamess11
    【解决方案2】:

    在您删除“状态”列的原始数据框上使用 pandas.get_dummiesjoin

    df.drop(columns='status').join(pd.get_dummies(df['status']))
    

    输出:

       id  gender  name    Fail  Pass  Withdrawn
    0    1      M   John      0     0          1
    1    2      F   Mary      0     1          0
    2   10      F   Kate      1     0          0
    

    【讨论】:

    • 感谢您的快速回复!之前没听说过get_dummies函数,好像很有用。
    最近更新 更多