- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一张患者诊断代码表,其中每一行代表一名患者的所有诊断:
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 代表没有诊断)。我想创建一个成对频率表来计算患者有不同诊断对的次数:
I48.91 R60.9 M19.90
I48.91 count(I48.91) count(I48.91, R60.9) count(I48.91, M19.90)
R60.9 count(R60.9, 148.91)
M19.9 ...
我创建的表是这样的:
FreqTable = pd.DataFrame(columns=UniqueCodes['DCODE'], index=UniqueCodes['DCODE'])
FreqTable = FreqTable.fillna(0)
Table of Pairwise frequency counts in Python使用嵌套 for 循环对一列数据执行此操作,但对于多列这会变得复杂。任何人都有好的 pythonese 方法来做到这一点?
最佳答案
让我们创建一个更小的示例,以便更容易看到每个步骤的效果并验证结果的正确性:
df = pd.DataFrame({'D0': ['0', 'A', 'B', 'C'],
'D1': ['B', '0', 'C', 'D'],
'D2': ['C','D','0','A']})
# D0 D1 D2
# 0 0 B C
# 1 A 0 D
# 2 B C 0
# 3 C D A
由于要忽略 0,所以让我们将它们更改为 NaN:
df = df.replace('0', np.nan)
列标签 D0
、D1
、D2
也是可以忽略的。重要的是这一行。所以让我们stack
组成一个系列的列:
code = df.stack()
0 D1 B
D2 C
1 D0 A
D2 D
2 D0 B
D1 C
3 D0 C
D1 D
D2 A
dtype: object
同样,由于列标签无关紧要,让我们删除索引的第二级:
code.index = code.index.droplevel(1)
code.name = 'code'
这样我们就可以结束
0 B
0 C
1 A
1 D
2 B
2 C
3 C
3 D
3 A
Name: code, dtype: object
请注意,该系列的索引是指 df
中的原始行标签。如果我们要 join
code
自身,那么对于每一行,我们将得到同一行中所有代码对的列表:
code = code.to_frame()
pair = code.join(code, rsuffix='_2')
# code code_2
# 0 B B
# 0 B C
# 0 C B
# 0 C C
# 1 A A
# 1 A D
# 1 D A
# 1 D D
# 2 B B
# 2 B C
# 2 C B
# 2 C C
# 3 C C
# 3 C D
# 3 C A
# 3 D C
# 3 D D
# 3 D A
# 3 A C
# 3 A D
# 3 A A
现在问题通过使用 pd.crosstab
解决了根据此数据制作频率表:
freq = pd.crosstab(pair['code'], pair['code_2'])
综合起来:
import numpy as np
import pandas as pd
df = pd.DataFrame({'D0': ['0', 'A', 'B', 'C'],
'D1': ['B', '0', 'C', 'D'],
'D2': ['C','D','0','A']})
# D0 D1 D2
# 0 0 B C
# 1 A 0 D
# 2 B C 0
# 3 C D A
df = df.replace('0', np.nan)
code = df.stack()
code.index = code.index.droplevel(1)
code.name = 'code'
code = code.to_frame()
pair = code.join(code, rsuffix='_2')
freq = pd.crosstab(pair['code'], pair['code_2'])
产量
code_2 A B C D
code
A 2 0 1 2
B 0 2 2 0
C 1 2 3 1
D 2 0 1 2
关于python - Python 中多列的成对频率表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38710682/
我有 X 个值通过 CSV 传递到表中 - 因此我将 99315,99316,99223 并将它们拆分到单列临时表中 - CSV 中的每个值都放入一行。 我需要做的是获得成对的值的每个排列 -所以 -
我已经看到了几个关于如何生成数组中元素的所有可能组合的类似问题。但是我很难弄清楚如何编写一个只输出对组合的算法。任何建议将不胜感激! 从以下数组开始(有 N 个元素): var array = ["a
基本上我想做这样的查询: SELECT * FROM `table` WHERE (`c1`,`c2`) in (('a','b'),('c','d')) 我尝试了一些方法,但找不到任何关于如何实现的
我声明了一个 vector 对: vector > args; 然后我想像这样将一对插入 vector : args.push_back((1,-1)); 它告诉我逗号的左边操作数没有作用。我哪里出
我正在用给定的对填充 vector 的邻接列表: vector> adj[1000]; 我正在对列表进行深度优先搜索,但遇到了一些奇怪的行为。第一个 print 语句打印一些值,这意味着我在 adj[
这个问题Mysql Select some random rows and plus one specific row非常接近我想要的,只是我不知道如何将 ORDER BY 应用于我的情况。 当有人接
我在字符串向量中有大量文本(大约 700.000 个字符串)。我正在尝试替换语料库中的特定单词/短语。也就是说,我有一个包含 app 40.000 个短语的向量和一个相应的替换向量。 我正在寻找解决问
我正在寻找一种方法来找到第 2 组(对)的集群。 有没有一种简单的方法可以做到这一点? 想象一下,我有某种数据想要匹配 x和 y , 喜欢 library(cluster) set.seed(1) d
我必须正确编码 5 个 XML 保留字符(& "和 '),如下所示: "&", "&" "", ">" "\"", """ "\'", "'" 我可以一一做,
我正在处理我的作品集。我在正文中有图像我希望图像应该只使用 css/css3/Jquery 对 Angular 线而不是通过 photoshop 编辑我已经尝试对正文使用变换旋转。 但我没有得到结果。
我带着类似的问题又回来了。是否有可以返回其特定合作伙伴的数据类型?例如: ExampleType test = new ExampleType(); test.put("hello","hi"); 如
我正在对我的数据运行事后 Tukey HSD,该数据有 10 个因子级别。该表很大,我希望在成对的表中向读者展示 p 值,将 45 行表留给附录。 这是一个示例数据集: set.seed(42) x
我正在对我的数据运行事后 Tukey HSD,该数据有 10 个因子级别。该表很大,我希望在成对的表中向读者展示 p 值,将 45 行表留给附录。 这是一个示例数据集: set.seed(42) x
我想根据 std::pair 的 std::vector 找到 std::lower_bound second 元素与 lambda。 std::vector > vec; vec.resize(5
得到这个简单的python代码,和re.compile实例一样匹配。我注意到,即使我使用的是完全相同的值,它也会创建两个实例,并相应地重复它们。 我想知道是否有人可以说出这种行为的原因, 为什么要创建
首先,我是 C++ 的新手,所以我可能不得不深入研究伪代码和/或 Python 来解释我正在尝试做的事情... 我正在尝试为动画的每一帧存储多个 Sprite 的 X 和 Y 坐标对。我设想这类似于以
test1和test2在内存中的布局是否相同? std::vector > test1; std::vector test2; 其中 mystruct 定义为: struct mystru
我有这个代码: std::vector> vec; vec.emplace_back("a", 1); //success vec.emplace(vec.end(), "b", 2); //comp
跟进 this question ,我正在尝试制作箱线图和成对比较以再次显示显着性水平(仅针对重要的成对),但这次我有超过 2 个组要比较和更复杂的方面。 我将在此处使用 iris 数据集进行说明。检
我有一个 vector 对,如下所示。第一对值未排序,第二对值已排序(从零开始)。我可能想通过实现 std::vector 和 std::pair 来存储数据。当我有第一对值(未排序)时,找到相应的第
我是一名优秀的程序员,十分优秀!