大家好,我是python datafram的初学者::
我的数据框是熊猫格式的,如下所示 标头[疾病,症状]
Disease Symptom
0 di1 sy1
1 di1 sy4
2 di1 sy7
3 di3 sy2
4 di3 sy4
5 di3 sy7
## di =疾病,sy =症状
我想研究对与症状相关的每种疾病的预测,我希望有人能帮助我创建矩阵脚本 提供每种疾病是否与症状有关的信息。ID s1 s2 s3 s4 s5 s6 s7
di1 1 0 0 1 0 0 0
di2 0 1 0 0 0 1 1
di3 0 1 0 1 0 0 0
di4 0 0 0 0 0 0 1
di5 0 1 0 1 0 0 0
这个想法是,如果一种疾病与基质症状1无关,那么该症状是否与基质症状1相关联
如果有人帮助我非常感谢!谢谢。
答案 0 :(得分:0)
您可以结合使用pandas.get_dummies和pandas.DataFrame.groupby来获得它。
为简单起见,我将按如下方式创建我的初始数据框:
>>> df
Disease Symptom
0 d1 s1
1 d1 s4
2 d1 s7
3 d3 s2
4 d3 s4
5 d3 s7
我可以使用pd.get_dummies()
方法为“症状”功能生成虚拟列。
>>> df_g = pd.get_dummies(df,columns=['Symptom'])
>>> df_g
Disease Symptom_s1 Symptom_s2 Symptom_s4 Symptom_s7
0 d1 1 0 0 0
1 d1 0 0 1 0
2 d1 0 0 0 1
3 d3 0 1 0 0
4 d3 0 0 1 0
5 d3 0 0 0 1
现在,我可以根据df.groupby()
的列值使用Disease
打包多行,并对那些一键编码的矢量求和,以获得最终的期望结果。
>>> df_gg = df_g.groupby(['Disease'], as_index=False).sum()
>>> df_gg
Disease Symptom_s1 Symptom_s2 Symptom_s4 Symptom_s7
0 d1 1 0 1 1
1 d3 0 1 1 1
Symptom_s3
和Symptom_s5
是简单的零列,可以在以后附加。我的示例df
没有s6
来通过get_dummies()
获取列。