[英]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循环以读取每一行并附加其转置,但是必须有一种更简单的方法。 任何帮助,将不胜感激。
假设您的数据框看起来像
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.