NetworkX GEXFライターは、0から始まるエッジID -Integersを生成します - 指定がない場合。 ID(Edge 1,2)なしで2番目のエッジを追加したため、最初のエッジIDと衝突するIDが0のIDが使用されました。
それはバグである可能性があり、確かにあなたのユースケースに問題を引き起こします。回避策の1つは、ノードを追加するときにエッジIDを明示的に設定することです。
In [1]: import networkx as nx
In [2]: G = nx.read_gexf('first.gexf')
In [3]: G.edges(data=True)
Out[3]: [('1', '0', {'id': '0'})]
In [4]: G.add_edge(1,2,id=1)
In [5]: G.edges(data=True)
Out[5]: [('1', '0', {'id': '0'}), (2, 1, {'id': 1})]