Python 蟒蛇熊猫——”;1D“;文件到二维数组

Python 蟒蛇熊猫——”;1D“;文件到二维数组,python,numpy,matrix,pandas,symmetric,Python,Numpy,Matrix,Pandas,Symmetric,我看到了如何将嵌套的“2D”字典转换为数据帧。这将是我问题的解决方案,但我想知道,是否可以跳过生成嵌套字典的中间步骤。假设我的inputinput.txt如下所示: A B 1 A C 2 B C 3 我可以用Pandas或Numpy将其转换为以下对称矩阵,而不必生成中间嵌套字典吗 A B C A 0 1 2 B 1 0 3 C 2 3 0 我希望避免创建的嵌套字典是: d = {'A':{'B':1,'C':2},'B':{'C':3}} 我在阅读了以下IO工具文档后尝试了此操作:

我看到了如何将嵌套的“2D”字典转换为数据帧。这将是我问题的解决方案,但我想知道,是否可以跳过生成嵌套字典的中间步骤。假设我的input
input.txt
如下所示:

A B 1
A C 2
B C 3
我可以用Pandas或Numpy将其转换为以下对称矩阵,而不必生成中间嵌套字典吗

  A B C
A 0 1 2
B 1 0 3
C 2 3 0
我希望避免创建的嵌套字典是:

d = {'A':{'B':1,'C':2},'B':{'C':3}}
我在阅读了以下IO工具文档后尝试了此操作:

但我没有二维热图,当我这样做时:

import matplotlib.pyplot as plt
plt.pcolor(df)
plt.imshow()

不确定这是否更有效,但您可以将帧添加到转置中,例如:

df = pd.read_csv("input.txt", header=None, delim_whitespace=True)
df = df.pivot(0,1,2)
df.add(df.T, fill_value=0).fillna(0)

   A  B  C
A  0  1  2
B  1  0  3
C  2  3  0

这是关于和的文档。下面是正在发生的事情。第一行
df=pd.read\u csv(“input.txt”,header=None,delim\u whitespace=True)
返回:

   0  1  2
0  A  B  1
1  A  C  2
2  B  C  3
第二行
df=df.pivot(0,1,2)
然后返回:

1   B   C
0           
A   1   2
B NaN   3
幻数
0
1
2
索引
index=0
是用于创建新框架索引的列名<代码>索引只是行名称的行话
columns=1
是用于生成新框架的列的列名。而
values=2
只是用于生成新框架值的列名

第三行
df.add(df.T,fill_value=0)。fillna(0)
只是添加转置,将三角矩阵转换为对称矩阵。它返回:

   A  B  C
A  0  1  2
B  1  0  3
C  2  3  0

谢谢你是第一个向我展示我为什么要费心学习熊猫的人。很抱歉没有立即投票支持您的答案,但我必须先阅读文档才能理解您答案中的
df.pivot(0,1,2)
部分。它效率不高,但只有3行代码,这对我来说是必不可少的,因为这是一个实用的课程,我在非洲参加一个课程,参与者几乎没有编程经验。非常感谢。谢谢。您可以编辑或建议对DSM的答案进行编辑,而不是在您的问题中解释已接受的答案,将解释放在答案中,这将直接在@tim castelijns完成。谢谢你教我这个过程,不用担心。它更适合问答形式在哪里?此外,编辑不需要说
edit:
   A  B  C
A  0  1  2
B  1  0  3
C  2  3  0