Автор NetworkX GEXF генерирует идентификатор края - целые числа, начинающиеся с 0 - если кто -то не указан. Поскольку вы добавили второй край без идентификатора (Edge 1,2), использовался идентификатор 0, который сталкивается с вашим первым идентификатором края.
Это может быть ошибка и, безусловно, вызывает проблему с вашим вашим вашим вариантом использования. Один обходной путь - явно установить идентификатор края при добавлении узла.
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})]