如何根据日期和id(groupby)从列和概率中获得最大相关性,并将其分配到新列中



我在试图获得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

相关内容

  • 没有找到相关文章

最新更新