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)
您可以将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)