Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计数与排序共生矩阵_Python_Pandas_Numpy_Dataframe_Scipy - Fatal编程技术网

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相同@阿诺克斯