繁体   English   中英

将NXN矩阵转换为熊猫数据框

[英]Convert an nxn matrix to a pandas dataframe

我在csv中有以下格式的n x n数据

-   A   B   C   D
A   0   1   2   4
B   2   0   3   1
C   1   0   0   5
D   2   5   4   0
...

我想阅读并将其转换为以下格式的3D熊猫数据框:

Origin Dest Distance
A      A    0
A      B    1
A      C    2

...

转换它的最佳方法是什么? 在最坏的情况下,我将编写一个for循环以读取每一行并附加其转置,但是必须有一种更简单的方法。 任何帮助,将不胜感激。

使用pd.melt()

假设您的数据框看起来像

In [479]: df
Out[479]:
   -  A  B  C  D
0  A  0  1  2  4
1  B  2  0  3  1
2  C  1  0  0  5
3  D  2  5  4  0

In [480]: pd.melt(df, id_vars=['-'], value_vars=df.columns.values.tolist()[1:],
   .....:         var_name='Dest', value_name='Distance')
Out[480]:
    - Dest  Distance
0   A    A         0
1   B    A         2
2   C    A         1
3   D    A         2
4   A    B         1
5   B    B         0
6   C    B         0
7   D    B         5
8   A    C         2
9   B    C         3
10  C    C         0
11  D    C         4
12  A    D         4
13  B    D         1
14  C    D         5
15  D    D         0

其中df.columns.values.tolist()[1:]是剩余的列['A', 'B', 'C', 'D']

要将'-'替换为'Origin',您可以使用dataframe.rename(columns={...})

pd.melt(df, id_vars=['-'], value_vars=df.columns.values.tolist()[1:],
        var_name='Dest', value_name='Distance').rename(columns={'-': 'Origin'})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM