gpt4 book ai didi

Python Pandas - "1D"文件到二维数组

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:02 25 4
gpt4 key购买 nike

我看到了an answer to a question将嵌套的“2D”字典转换为 Pandas DataFrame。这将是我的问题的解决方案,但后来我想知道,我是否可以跳过生成嵌套字典的中间步骤。假设我的输入 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}}

我在阅读 "Reading an index with a MultiIndex" 上的 IO 工具文档后尝试了这个:

import pandas as pd
df = pd.read_csv('input.txt', sep=' ', index_col=[0,1], header=None)

但是当我这样做时,我没有得到 2D 热图:

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

最佳答案

不确定这是否更有效率,但你可以 pivot然后将框架添加到其转置中,例如:

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

这是关于 add 的文档和 pivot .这是怎么回事。第一行 df = pd.read_csv("input.txt", header=None, delim_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

魔数(Magic Number)012索引index=0 是用于创建新帧索引的列名。 index 只是行名称的 pandas 行话。 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

关于Python Pandas - "1D"文件到二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30196104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com