gpt4 book ai didi

python - 在python中显示带有附加变量的组中的唯一名称和列值总计

转载 作者:行者123 更新时间:2023-12-01 03:38:04 25 4
gpt4 key购买 nike

我正在学习 Python,并且认为从事项目工作可能是学习它的最佳方式。我有大约 200,000 行数据,其中数据显示患者的药物列表。这是数据示例。

PTID PTNAME     MME   DRNAME       DRUGNAME                    SPLY STR QTY  FACTOR
1 PATIENT, A 2700 DR, A OXYCODONE HCL 15 MG 30 15 120 1.5
1 PATIENT, A 2700 DR, B OXYCODONE HCL 15 MG 30 15 120 1.5
2 PATIENT, B 4050 DR, C MORPHINE SULFATE ER 15 MG 30 15 270 1
2 PATIENT, B 4050 DR, C MORPHINE SULFATE ER 15 MG 30 15 270 1
2 PATIENT, B 840 DR, A OXYCODONE-ACETAMINOPHE 10MG-32 14 10 56 1.5
2 PATIENT, B 1350 DR, C OXYCODONE-ACETAMINOPHE 5 MG-32 15 5 180 1.5
3 PATIENT, C 1350 DR, C OXYCODONE-ACETAMINOPHE 5 MG-32 15 5 180 1.5
3 PATIENT, C 1800 DR, D OXYCODONE-ACETAMINOPHE 10MG-32 30 10 120 1.5

我一直在思考这个问题,并尝试了很多方法,但没有一个代码产生任何结果或没有任何意义。老实说,我什至不知道从哪里开始。如果有一点帮助,我们将不胜感激。

因此,我想要做的是整合每个患者的数据并计算每个患者的总 MMEDRUGNAME 应显示具有更高 MME 的药物。换句话说,数据帧对于每个患者应该只有一行。

我尝试过的一件事是

groupby_ptname = semp.groupby('PTNAME').apply(lambda x: x.MME.sum())

它显示了具有总 MME 的独特患者姓名,但我不确定如何在这个新数据框中添加其他变量。

最佳答案

IIUC 你可以这样做:

In [62]: df.sort_values('MME').groupby('PTNAME').agg({'MME':'sum', 'DRUGNAME':'last'})
Out[62]:
DRUGNAME MME
PTNAME
PATIENT, A OXYCODONE HCL 15 MG 5400
PATIENT, B MORPHINE SULFATE ER 15 MG 10290
PATIENT, C OXYCODONE-ACETAMINOPHE 10MG-32 3150

或使用.reset_index():

In [64]: df.sort_values('MME').groupby('PTNAME').agg({'MME':'sum', 'DRUGNAME':'last'}).reset_index()
Out[64]:
PTNAME DRUGNAME MME
0 PATIENT, A OXYCODONE HCL 15 MG 5400
1 PATIENT, B MORPHINE SULFATE ER 15 MG 10290
2 PATIENT, C OXYCODONE-ACETAMINOPHE 10MG-32 3150

更新:使用agg()函数更有趣

In [84]: agg_funcs = {
...: 'MME':{'MME_max':'last',
...: 'MME_total':'sum'},
...: 'DRUGNAME':{'DRUGNAME_max_MME':'last'}
...: }
...:
...: rslt = (df.sort_values('MME')
...: .groupby('PTNAME')
...: .agg(agg_funcs)
...: .reset_index()
...: )
...: rslt.columns = [tup[1] if tup[1] else tup[0] for tup in rslt.columns]
...:

In [85]: rslt
Out[85]:
PTNAME MME_total MME_max DRUGNAME_max_MME
0 PATIENT, A 5400 2700 OXYCODONE HCL 15 MG
1 PATIENT, B 10290 4050 MORPHINE SULFATE ER 15 MG
2 PATIENT, C 3150 1800 OXYCODONE-ACETAMINOPHE 10MG-32

关于python - 在python中显示带有附加变量的组中的唯一名称和列值总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com