我是神经外科的外科医生。我有一个60万条记录的数据框架,有70列,其中有7个日期列,用于记录6年内医院系统中发生在患者身上的各种事件。 我 我对修补颅骨的颅骨植入物感兴趣
此数据框中有4000条记录,显示插入或移除植入物的操作代码。约900名患者进行了一次以上的手术,其中约500例植入物植入,约500例植入物移除(用于感染等)。我把操作的日期记为pd.datetime。我把病人的身份证加密了
60万条记录跨越6年。我需要分析900个做过多次手术的人。 我需要按日期排序操作,因为这只是一个及时的快照。 例如,患者可以在快照数据收集开始前植入植入物,然后在快照期间将其移除,然后在快照期间重新插入。相反,在快照期间,可以进行反向插入和删除。所以我想确定删除插入和删除插入的次数,以及两者之间的时间
理想情况下,我希望有一个患者id表作为索引,插入+删除日期作为字段。然后,我可以计算两个时间间隔
我是python新手,-可以做基本过滤、分组、交叉表等,但还不能做循环。 非常感谢
ID OP_code OPDATE_01
1 xxx V259 2014-12-12
2 xxx A082 2014-06-23
3 999 V011 2014-08-07
4 xxx A023 2014-09-12
... ... ... ...
473231 xxx A651 2018-10-03
473233 999 V014 2018-07-06
473235 xxx A263 2018-05-18
这里有一些数据,这些行是单独的护理事件,因此“患者ID”列不是唯一的。如上所述,患者ID 999在2014-08-07植入了一个植入物(代码V011),然后在2018-07-06取出了一个植入物(代码V014)。 所以我想要一张桌子
ID. OPDATE1. OP_01_code OPDATE2. OP_02_code
999. 2014-08-07. V011 2018-07-06. V014
要做到这一点,我必须在4000个记录数据框中按ID搜索3000个左右的个体ID患者,以获得每个患者的个体手术,然后按照上表进行排序。显然,大多数人只有一次手术
更新 -在下面的@Arne建议之后
display(df_implants)
OPDATE_01 OPERTN_01
ENCRYPTED_HESID
1111 [2019-01-26] [V011]
1112 [2019-01-22] [V011]
1113 [2015-09-24] [V011]
1114 [2016-06-21, 2017-02-27] [V011, V014]
1115 [2018-12-27] [V011]
... ... ...
3046 [2017-02-18] [V011]
3047 [2013-06-08] [V011]
编辑:我已将下面的筛选条件更改为至少两个不同的操作
这里有一种方法可以做到这一点。出于测试目的,我对您的数据做了一些更改
首先,我们应该转换数据,以便每个患者只有一行,从列表中的多个OPs收集数据:
现在给出一个与您感兴趣的植入物对应的操作代码列表,我们可以循环此数据框的行,以创建一个索引,仅包含至少有两个不同操作感兴趣的患者。然后我们可以根据这个新的索引过滤数据
您可以通过数据帧和列表的索引语法组合访问此处的数据元素,例如
df_implants.loc[999, 'OP_date'][0]
生成患者999的第一个操作日期:'2014-08-07'
我不建议为每个OP创建单独的专栏。您可以尝试以下方法:
然而,这种方法在实践中会遇到麻烦,因为不同患者的老年退休金计划数量不同。这就是为什么我认为上面给出的列表表示更自然、更容易处理的原因
相关问题 更多 >
编程相关推荐