如何将Pandas DataFrame从columnsindex形状转换为columnscolumns形状汇总值

2024-06-16 14:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些组织(以“fakulta”专栏为代表),它们在许多项目上合作(或不合作)(行“ID_RIV”)

输入DF:

df = pd.DataFrame({'FEI':[1,0,0,1,0],
                   'HGF':[0,1,1,0,0],
                   'FBI':[0,1,1,1,1]},
                  index = [1,2,3,4,5])

df.index.name = 'ID_RIV'
df.columns.name = 'fakulta'

print(df)
fakulta  FEI  HGF  FBI
ID_RIV                
1          1    0    0
2          0    1    1
3          0    1    1
4          1    0    1
5          0    0    1

我想知道谁和谁合作

如何将输入DF转换为对称矩阵(平方DF),如下所示:

期望输出:

     FEI HGF FBI
FEI    1   0   1
HGF    0   0   2
FBI    1   2   1

Tags: 项目nameiddataframedfindex代表pd
1条回答
网友
1楼 · 发布于 2024-06-16 14:26:43

你可以用点积,然后替换对角线。这将返回您所需的输出

import numpy as np
df_out = df.T.dot(df)


df_singles = df.loc[df.sum(axis=1)==1]     
df_singles = df_singles.T.dot(df_singles)   

df_out.values[[np.arange(df_out.shape[0])]*2] = df_singles.values[[np.arange(df_singles.shape[1])]*2]

In [273]: df_out
Out[273]: 
     FEI  HGF  FBI
FEI    1    0    1
HGF    0    0    2
FBI    1    2    1

相关问题 更多 >