如何使用DataFrame(Pandas)给3D矩阵的维度命名

2024-04-25 21:50:14 发布

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

我想从我已有的列表中为3D矩阵命名。我只能给一方起名字,但不能给另外两方起名字

正如代码中提到的,我只能放一面,但我想放三个不同侧面的名字

subjects_in_graph = ['C', 'c1', 'c2']
edges_in_graph = ['p4', 'p3', 'p2', 'p1'] 

df=pd.concat([pd.DataFrame(x) for x in matrix], keys=subjects_in_graph)
print (df)

预期结果

        C   c1   c2    
C  p1  0.0  0.0  0.0  
   p2  0.0  0.0  0.0  
   p3  0.0  0.0  0.0  
   p4  0.0  0.0  0.0  

c1 p1  1.0  0.0  0.0  
   p2  1.0  0.0  0.0  
   p3  1.0  0.0  0.0  
   p4  1.0  0.0  0.0  

c2 p1  1.0  0.0  0.0  
   p2  1.0  0.0  0.0  
   p3  1.0  0.0  0.0  
   p4  1.0  0.0  0.0  

实际结果

        0    1    2    
C  0  0.0  0.0  0.0  
   1  0.0  0.0  0.0  
   2  0.0  0.0  0.0  
   3  0.0  0.0  0.0  
c1 0  1.0  0.0  0.0  
   1  1.0  0.0  0.0  
   2  1.0  0.0  0.0  
   3  1.0  0.0  0.0  
c2 0  1.0  0.0  0.0  
   1  1.0  0.0  0.0  
   2  1.0  0.0  0.0 
   3  1.0  0.0  0.0

Tags: indf列表矩阵名字命名graphpd
1条回答
网友
1楼 · 发布于 2024-04-25 21:50:14

将{}和{}放在{}中:

df=pd.concat([pd.DataFrame(x, index=edges_in_graph[::-1], columns=subjects_in_graph) for x in matrix], keys=subjects_in_graph)
print(df)

输出:

         C   c1   c2
C  p1  0.0  0.0  0.0
   p2  0.0  0.0  0.0
   p3  0.0  0.0  0.0
   p4  0.0  0.0  0.0
c1 p1  0.0  0.0  0.0
   p2  0.0  0.0  0.0
   p3  0.0  0.0  0.0
   p4  0.0  0.0  0.0
c2 p1  0.0  0.0  0.0
   p2  0.0  0.0  0.0
   p3  0.0  0.0  0.0
   p4  0.0  0.0  0.0

相关问题 更多 >