【问题标题】:Handling tuple data for pathpy visualization [closed]处理 pathpy 可视化的元组数据 [关闭]
【发布时间】:2019-11-22 12:26:19
【问题描述】:

我有.txt 格式的数据,由空格和换行符分隔。这是其中的一些。

1 2 1082040961
3 4 1082155839
5 2 1082414391
6 7 1082439619
8 7 1082439756

此数据表示时间图G = (u, v, t),其中u、v 和t 表示从节点u 到节点v 有一条边,时间戳为t。

我想使用 Python 的库 pathpy 可视化这些数据。 它们必须像下面这样编码才能添加边缘。

t.add_edge('1', '2', 1082040961)
t.add_edge('3', '4', 1082155839)
t.add_edge('5', '2', 1082414391)
t.add_edge('6', '7', 1082439619)
t.add_edge('8', '7', 1082439756)

但是数据中有很多边。所以我需要一个聪明的方法来处理这个。我应该如何编码这个元组转换?

【问题讨论】:

    标签: python python-3.x tuples


    【解决方案1】:

    您可以通过以下方式迭代数据集:

    with open(filename.txt) as f:
        for line in f:
            data = line.strip().split()
            t.add_edge(data[0], data[1], int(data[2])
    

    请让我知道这是否有效或如果您有任何其他问题。

    【讨论】:

    • 't.add_edge(data[0], data[1], int(data[2])' 这部分是否对第一列和第二列的数据用单引号进行编码?跨度>
    • 是的,data[0]、data[1] 和 data[2] 都是字符串,因此前两个可以传递给函数。
    【解决方案2】:

    不确定这是否是您需要的,但 pathpy 库中有一个 read_file 函数。它允许从与您的格式相似的文件构造一个新的TemporalNetwork 对象。检查这个commit。

    【讨论】:

      【解决方案3】:

      您也可以使用 pandas 库。

      import pandas as pd
      
      path = r"C:\txt\file\path"
      
      df = pd.read_fwf(path, header=None)
      length = len(df.index)
      
      for i in range(length):
          t.add_edge(df[df.columns[0]][i], df[df.columns[1]][i], df[df.columns[2]][i])
      

      【讨论】:

      • 为什么要在path 中使用r 前缀标记字符串?该前缀标志着正则表达式的开始。
      • 避免 unicode 错误。例如,我的路径是"C:\Users\berka\Desktop\dene.txt",\b 会导致 unicode 错误。
      • @accdias - r 并不意味着它是一个正则表达式,它意味着它是一个原始字符串,通常用于正则表达式,但在这种情况下它只是省去了手动转义文件名路径中的 `\`。
      • @thesilkworm,哦!我懂了。感谢您的解释。我一直使用它,认为它是正则表达式的标记,现在它更有意义了。
      【解决方案4】:

      这也可能有帮助:

      print [t.add_edge(str(data[0]),str(data[2]),int(data[4:-1])) for data in open("filename.txt") if data.strip().split(" ")]
      

      【讨论】:

        猜你喜欢
        • 2014-10-09
        • 1970-01-01
        • 2022-01-21
        • 2014-10-04
        • 1970-01-01
        • 2012-01-21
        • 2019-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多