Python 计数与排序共生矩阵
我有一个熊猫共现矩阵。如何获得所有组合的共现值,按降序排序而不循环? (我没有将值写在对角线的另一侧,但它们在那里,并保存镜像值) 输入:Python 计数与排序共生矩阵,python,pandas,numpy,dataframe,scipy,Python,Pandas,Numpy,Dataframe,Scipy,我有一个熊猫共现矩阵。如何获得所有组合的共现值,按降序排序而不循环? (我没有将值写在对角线的另一侧,但它们在那里,并保存镜像值) 输入: A B C D E F A 0 1 0 1 2 0 B 0 3 1 1 1 C 0 1 8 9 D 0 2 6 E 0 9 F 0 输出: CF 9 EF 9 CE 8 DF 6 BC 3 AE 2 DE 2
A B C D E F
A 0 1 0 1 2 0
B 0 3 1 1 1
C 0 1 8 9
D 0 2 6
E 0 9
F 0
输出:
CF 9
EF 9
CE 8
DF 6
BC 3
AE 2
DE 2
AB 1
AD 1
BD 1
BE 1
BF 1
CD 1
AC 0
AF 0
设置
txt = """\
A B C D E F
A 0 1 0 1 2 0
B 0 3 1 1 1
C 0 1 8 9
D 0 2 6
E 0 9
F 0"""
df = pd.read_fwf(pd.io.common.StringIO(txt), index_col=0).fillna('')
df
A B C D E F
A 0 1 0 1 2 0
B 0 3 1 1 1
C 0 1 8 9
D 0 2 6
E 0 9
F 0
设置
txt = """\
A B C D E F
A 0 1 0 1 2 0
B 0 3 1 1 1
C 0 1 8 9
D 0 2 6
E 0 9
F 0"""
df = pd.read_fwf(pd.io.common.StringIO(txt), index_col=0).fillna('')
df
A B C D E F
A 0 1 0 1 2 0
B 0 3 1 1 1
C 0 1 8 9
D 0 2 6
E 0 9
F 0
您可以使用
itertools
中的组合
循环浏览行和列,并添加到列表中
from itertools import combinations
explode_list = []
_ = [explode_list.append([r + c, df.loc[r][c]]) for r, c in combinations(df.columns, 2)]
输出
[['AB', 1],
['AC', 0],
...
]
您可以使用
itertools
中的组合
循环浏览行和列,并添加到列表中
from itertools import combinations
explode_list = []
_ = [explode_list.append([r + c, df.loc[r][c]]) for r, c in combinations(df.columns, 2)]
输出
[['AB', 1],
['AC', 0],
...
]
伤害,但有用。非常感谢。这并不是为了,而是一个关于我们为什么否决某个问题的可靠信息来源,因此作为提问者,您不会感到奇怪,为什么没有人愿意提供帮助,并且可以稍后提出更好的问题。另外,如果您尝试更新问题,我可能会删除否决票。我不知道“尝试”是什么意思尽管。。我应该写我以前试过做的事情吗?“我试过这段代码,它给了我X结果。我期望/想要Y结果。”等等。如果你真的很精明,“我认为问题与Z有关,但我不确定。”有害,但有用。非常感谢。这并不是为了,而是一个关于我们为什么否决某个问题的可靠信息来源,因此作为提问者,您不会感到奇怪,为什么没有人愿意提供帮助,并且可以稍后提出更好的问题。另外,如果您尝试更新问题,我可能会删除否决票。我不知道“尝试”是什么意思尽管。。我应该写我以前试过的吗?“我试过这个代码,它给了我X结果。我期望/想要Y结果。”等等。如果你真的很精明,“我想问题与Z有关,但我不确定。”谢谢!因此,我将代码修改为:coocc.stack().pipe(lambda s:s.set_轴(s.index.map('and'.join),inplace=False)).astype(int.sort_值(升序=False)。但是有没有办法不复制行和列呢?我的意思是只有AB显示。假设AB和BA都是空的,它们不是空的,而是另一面的镜子。意思是AB与BAUPDATE相同@谢谢!因此,我将代码修改为:coocc.stack().pipe(lambda s:s.set_轴(s.index.map('and'.join),inplace=False)).astype(int.sort_值(升序=False)。但是有没有办法不复制行和列呢?我是说只有AB显示。假设AB和BA都是空的,它们不是空的,而是另一面的镜子。意思是AB与BAUPDATE相同@阿诺克斯