Python Pandas - “一维”文件到二维数组
Python Pandas - "1D" file to 2D array
我看到 an answer to a question 将嵌套的“2D”字典转换为 Pandas DataFrame。这将是我的问题的解决方案,但后来我想知道,我是否可以跳过生成嵌套字典的中间步骤。假设我的 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}}
我在阅读 "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)
returns:
0 1 2
0 A B 1
1 A C 2
2 B C 3
第二行df = df.pivot(0,1,2)
然后returns:
1 B C
0
A 1 2
B NaN 3
幻数 0
、1
和 2
是 index
、columns
和 values
。 index=0
是用于创建新框架索引的列名。 index
只是行名称的 pandas 行话。 columns=1
是用于创建新框架的列的列名。 values=2
只是用于制作新框架值的列名。
第三行df.add(df.T, fill_value=0).fillna(0)
只是加上转置,将三角矩阵转为对称矩阵。它returns:
A B C
A 0 1 2
B 1 0 3
C 2 3 0
我看到 an answer to a question 将嵌套的“2D”字典转换为 Pandas DataFrame。这将是我的问题的解决方案,但后来我想知道,我是否可以跳过生成嵌套字典的中间步骤。假设我的 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}}
我在阅读 "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)
returns:
0 1 2
0 A B 1
1 A C 2
2 B C 3
第二行df = df.pivot(0,1,2)
然后returns:
1 B C
0
A 1 2
B NaN 3
幻数 0
、1
和 2
是 index
、columns
和 values
。 index=0
是用于创建新框架索引的列名。 index
只是行名称的 pandas 行话。 columns=1
是用于创建新框架的列的列名。 values=2
只是用于制作新框架值的列名。
第三行df.add(df.T, fill_value=0).fillna(0)
只是加上转置,将三角矩阵转为对称矩阵。它returns:
A B C
A 0 1 2
B 1 0 3
C 2 3 0