我有一个患者诊断代码表,其中每行代表一个患者的所有诊断:
D0 D1 D2 D3 D4 D5 D6
0 0 0 0 0 0 0 0
1 I48.91 R60.9 M19.90 Z87.2 0 0 0
2 496 564.00 477.9 0 J44.9 J30.9 I10
3 I96 R63.0 Z51.5 0 L97.909 I69.90 F01.50
4 491.21 428.0 427.31 V58.61 0 I48.91 Z79.01
5 0 0 0 0 0 0 0
6 J44.9 F41.9 I10 H61.22 0 Z23 0
7 0 0 0 0 0 0 0
8 M48.00 I12.9 N18.9 K59.00 0 N39.0 Z23
9 I11.9 R41.82 R56.9 E11.49 K59.00 0 J45.901
10 I11.9 N40.0 F01.50 0 N40.1 J18.9 J44.1
11 R31.9 M19.90 0 R53.81 0 0 0
12 0 0 0 0 0 0 0
13 M48.02 M48.06 I27.2 0 R53.81 0 0
14 I50.9 M19.90 F41.9 I25.10 0 0 0
15 0 0 0 0 0 0 0
16 I69.359 I48.91 R74.8 I10 0 T50.901A I95.9
。。。600多个病人,每一个都有多达15个诊断。(0表示没有诊断)。 我想创建一个成对频率表来计算患者有不同诊断对的次数:
^{pr2}$我创建了这样的表:
FreqTable = pd.DataFrame(columns=UniqueCodes['DCODE'], index=UniqueCodes['DCODE'])
FreqTable = FreqTable.fillna(0)
Table of Pairwise frequency counts in Python使用嵌套for循环对一列数据执行此操作,但对于多个列,这会变得复杂。有人用Python的好方法来做这件事吗?在
让我们创建一个较小的示例,以便于查看每个步骤的效果并验证结果的正确性:
由于0将被忽略,我们将它们改为nan:
^{pr2}$列标签} 列组成一个系列:
D0
、D1
、D2
也是可忽略的。重要的是争吵。 让我们^{同样,由于列标签无关紧要,让我们去掉索引的第二级:
所以我们最终
注意,这个系列的索引引用}
df
中的原始行标签。如果我们将^{code
与它本身,那么我们将得到同一行中每一行的所有代码对的列表:现在,通过使用^{} 根据此数据制作频率表来解决问题:
综合起来:
收益率
相关问题 更多 >
编程相关推荐