我在试图获得sintoms和概率之间的Top3相关性时遇到了一点困难,我需要根据相同的id和日期对这些东西进行分组。问题是,我有超过800k个组合,在for循环中,它消耗了很多时间。此外,我需要将id和日期的每个组合的前3个sintoms保存在列表或其他文件中,以将其分配给新的数据帧。
我的数据帧示例是这样的,但正如我所提到的,超过800k行:
id date fever pain flu cough probability
1 2020-11-01 1 0 1 0 0.57
1 2020-11-02 0 1 1 1 0.44
2 2020-11-03 1 1 1 0 0.55
2 2020-11-03 0 1 1 1 0.67
3 2020-11-01 0 0 0 0 0
对于相关性,我需要从pandas
得到.corr()
。我知道相关性是如何工作的,所以,有时即使sintoms列中有"1",有时它们和概率列之间也没有检测到相关性。记住,每个id和日期之间的相关性应该分开。
所需的df应该是这样的格式(示例(:
id date fever pain flu cough probability top3_sintoms
1 2020-11-01 1 0 1 0 0.57 Fever, Flu
1 2020-11-02 0 1 1 1 0.44 Cough, Flu, Pain
2 2020-11-03 1 1 1 0 0.55 Fever, Pain, Flu
2 2020-11-03 0 1 1 1 0.67 Pain, Flu, Cough
3 2020-11-01 0 0 0 0 0 None
提前感谢!
让我们试试dot
s = df.loc[:,'fever':'cough']
df['new'] = s.dot(s.columns+',').str[:-1]
Out[235]:
0 fever,flu
1 pain,flu,cough
2 fever,pain,flu
3 pain,flu,cough
4
dtype: object