【问题标题】:Transform matrix adjacency to Source, Target, Value in CSV file (python)将矩阵邻接转换为 CSV 文件中的源、目标、值(python)
【发布时间】:2021-07-14 19:24:40
【问题描述】:

我有这个带有邻接矩阵的 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 | 

谢谢!

【问题讨论】:

    标签: python python-3.x csv matrix


    【解决方案1】:

    如果将零替换为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
    

    【讨论】:

      猜你喜欢
      • 2015-10-28
      • 2015-06-17
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多