将矩阵邻接转换为CSV文件(python)中的源、目标、值



我有这个CSV文件,带有邻接矩阵:

|    | Happy | Love | Fat | Ugly | Trust | 
|-------|---|---|---|---|---|
| Happy | 0 | 2 | 1 | 0 | 1 |
| Love  | 2 | 0 | 1 | 0 | 1 |
| Fat   | 1 | 1 | 0 | 0 | 0 |
| Ugly  | 0 | 0 | 0 | 0 | 1 |
| Trust | 1 | 1 | 0 | 1 | 0 | 

我想转换为一个新的csv文件,其中包含sorce、target和value值。例如:

|Source | Target | Value
|-------|---|---|
| Happy | Love | 2 |
| Happy  | Fat | 1 | 
| Happy   | Ugly | 0 | 

谢谢!

如果用nan替换零,则可以使用stack来实现这一点。

import pandas as pd
import numpy as np

df = pd.DataFrame({'Happy': {'Happy': 0, 'Love': 2, 'Fat': 1, 'Ugly': 0, 'Trust': 1},
'Love': {'Happy': 2, 'Love': 0, 'Fat': 1, 'Ugly': 0, 'Trust': 1},
'Fat': {'Happy': 1, 'Love': 1, 'Fat': 0, 'Ugly': 0, 'Trust': 0},
'Ugly': {'Happy': 0, 'Love': 0, 'Fat': 0, 'Ugly': 0, 'Trust': 1},
'Trust': {'Happy': 1, 'Love': 1, 'Fat': 0, 'Ugly': 1, 'Trust': 0}})
df = df.replace(0,np.nan).stack().reset_index()
df.columns = ['Source','Target','Value']

输出

Source Target  Value
0   Happy   Love    2.0
1   Happy    Fat    1.0
2   Happy  Trust    1.0
3    Love  Happy    2.0
4    Love    Fat    1.0
5    Love  Trust    1.0
6     Fat  Happy    1.0
7     Fat   Love    1.0
8    Ugly  Trust    1.0
9   Trust  Happy    1.0
10  Trust   Love    1.0
11  Trust   Ugly    1.0

相关内容

  • 没有找到相关文章

最新更新