二进制矢量化熊猫DataFrame列

Luc*_*tti 4 python dataframe pandas

在虚构的患者数据集中,可能会遇到下表:

pd.DataFrame({
    "Patients": ["Luke", "Nigel", "Sarah"],
    "Disease": ["Cooties", "Dragon Pox", "Greycale & Cooties"]
})
Run Code Online (Sandbox Code Playgroud)

它将呈现以下数据集:

虚构疾病

现在,假设有多个疾病的行使用相同的模式(分离与字符,在这种情况下一个&),并存在一个完整列表diseases的毛病,我还没有找到一个简单的解决方案,适用于这种情况下pandas.get_dummies一个-hot编码器以获得每个患者的二进制向量。

如何以最简单的方式从初始DataFrame获得以下二进制矢量化?

pd.DataFrame({
    "Patients": ["Luke", "Nigel", "Sarah"],
    "Cooties":[1, 0, 1],
    "Dragon Pox":[0, 1, 0],
    "Greyscale":[0, 0, 1]
})
Run Code Online (Sandbox Code Playgroud)

所需结果

Vai*_*ali 5

您可以将Series.str.get_dummies与右分隔符一起使用,

df.set_index('Patients')['Disease'].str.get_dummies(' & ').reset_index()

    Patients    Cooties Dragon Pox  Greycale
0   Luke        1       0           0
1   Nigel       0       1           0
2   Sarah       1       0           1
Run Code Online (Sandbox Code Playgroud)