【问题标题】:CSV Data is Being Read Out of OrderCSV 数据被乱序读取
【发布时间】:2017-03-13 00:15:56
【问题描述】:

使用 Python27 从 Excel 16 csv 文件中读取 csv 文件: 导入 csv 使用 open("C:\Users\RJ\FG\Line\Line List.csv") 作为 csv_input: 阅读器 = csv.DictReader(csv_input) 对于阅读器中的行: 打印(行)

生成所有正确的数据,但 Excel 文件中的第一列是“RoutingFrom”,但这里是最后一列。

{'RoutingTo': 'AMINE DRAIN', 'Item': '1', 'LineSectTag': 'AD-12-1-011-0', 'LDTDocNo': 'M6D-1P12-00009', ' RoutingFrom': '1AM-12010-0'}

当我使用文本编辑器打开 csv 文件时: 项目、RoutingFrom、RoutingTo、LDTDocNo、LineSectTag 它是第二列。

测试编辑器视图是文件的原始顺序。我将使用它在 Networkx 中添加边,因此我对电子表格中的列重新排序,以便前两列的“从”和“到”。 Excel 将它们显示为前两列,Pyhton 将它们读取为第一列和最后一列,文本编辑器将它们显示为第二列和第三列。

然后,我将重新排列的(从、到、项目、...)csv 文件作为文本复制到一个新的电子表格中,这是上述所有内容的来源。

关于如何获得一致有序的数据集有什么建议吗?

顺便说一句,我正在处理实际数据的一小部分,它是 10 倍宽和 50 倍长。

感谢所有的意见, 谢谢 雷

【问题讨论】:

标签: csv networkx


【解决方案1】:

Pandas 及其 DataFrame 对象非常适合这一点。 CSV 可以轻松加载,并且可以从 DF 中分割列以构建 NetworkX Graph。

import pandas as pd
import networkx as nx

df = pd.read_csv("C:\Users\RJ\FG\Line\Line List.csv")
edges = zip(df.RoutingFrom, df.RoutingTo)

G = nx.Graph()
G.add_edges_from(edges)

【讨论】:

  • 谢谢,易于实施。顺序丢失。这些行都被混淆了,并且一半的to's / form's被互换了。如何控制这些?
  • 这是一个有向图,所以我需要保持对排序,而且我还有很多边数据要引入;所以要么所有数据都需要立即进入,要么必须保持行排序。如果我将图形构造函数更改为有向图,则没有任何变化。 df 的数据结构与 df.RoutingFrom 和 df.RoutingTo 一样正确。如何维护 From/To 排序并提取剩余的边缘数据?
  • 如果你想要一个有向图,改成nx.DiGraph()。向DiGraph 添加边时,第一个节点是源节点('from'),第二个节点是汇节点('to')。你能澄清一下“行都混在一起了,to's / form's 的一半互换了”是什么意思吗?
  • 我已将图表更改为有向图。表格的和到的匹配。这些行乱序:
  • 从 G.edges() 输出的 df 输出注释 RoutingFrom RoutingTo 项目 0 1AM-12010-0 AMINE DRAIN 1 [('1AM-12254-0 ', '1AD-12822-0 '),第 108 行 1 1AM-12052-0 胺排放 2('1AD-12115-0','胺排放'),第 27 行 2 1PSV-120206A 1AD-12070-1 3('1AD-12082-0','1AD- 12693-0 '),第 82 行 3 1AD-12070-0 胺排水 4 ('1AM-12002-0','1AD-12121-0'),第 29 行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多