使用agg()在许多列上使用Pandas groupby

2024-05-15 09:36:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我被要求分析一个病历应用程序的数据库。所以一堆唱片看起来像:

Table image

因此,我必须通过PX恢复从2011年到2014年的300多万个记录,我知道它们重复,因为这是每个患者的ID,所以一个患者应该多次去看医生。我怎样才能按病人分组或恢复。在


Tags: 患者id数据库应用程序记录医生px病历
1条回答
网友
1楼 · 发布于 2024-05-15 09:36:32

我不知道你说的“简历”是什么意思,但看起来你只想用更好的方式对数据进行排序和显示。您可以将记录“px-和fecha-wise”按如下方式进行可视化分组:

df.set_index(['px', 'fecha'], inplace=True)

编辑:

当您基于某些公共属性对数据执行分组时,您必须决定对其他列中的数据使用何种聚合。简单地说,执行groupby之后,对于剩余的每个“pacient_id”,在每个剩余列中只有一个空字段for,因此必须使用某种聚合函数(例如sum、mean、min、avg、count…),该函数将返回分组数据所需的可表示值。在

由于数据被锁定在图像中,因此很难对数据进行处理,而且不可能说出“年龄”的含义,因为此列不可见,但我希望您可以通过查看以下带有虚拟数据的示例来实现您的目标:

^{pr2}$

原始虚拟数据帧如下所示:

   pacient_id             visited  age  bill
0         150 2012-12-24 21:34:17   20   188
1         155 2012-10-26 00:34:45   17   672
2         116 2011-11-28 13:15:18   33   360
3         126 2011-06-03 17:36:10   58   167
4         165 2013-07-15 15:39:31   68   815

第一个聚合如下:

    pacient_id        last_visited
0          100 2014-12-29 00:01:11
1          101 2014-12-22 06:00:48
2          102 2014-12-26 11:51:41
3          103 2014-12-29 15:01:32
4          104 2014-12-18 15:29:28
5          105 2014-12-30 11:08:29

第二,复杂聚合如下所示:

                       visited                       age         bill
                   first visit          last visit  mean average bill
pacient_id                                                           
100        2011-01-06 06:11:33 2014-12-29 00:01:11  45.2        507.9
101        2011-01-01 20:44:55 2014-12-22 06:00:48  44.0        503.8
102        2011-01-02 17:42:59 2014-12-26 11:51:41  43.2        498.0
103        2011-01-01 03:07:41 2014-12-29 15:01:32  43.5        495.1
104        2011-01-07 18:58:11 2014-12-18 15:29:28  45.9        501.7
105        2011-01-01 03:43:12 2014-12-30 11:08:29  44.3        513.0

这个例子应该能让你开始。另外,关于pandas groupby聚合还有一个很好的SO question,它可能会在这个主题上教你很多。在

相关问题 更多 >