Pracuję z zestawem danych e-mail Enron i próbuję usunąć adresy e-mail, które nie mają "@ enron.com" (tj. Chciałbym mieć tylko e-maile enronowe). Kiedy próbowałem usunąć te adresy bez @ enron.com, niektóre wiadomości e-mail właśnie zostały pominięte z pewnych powodów. Poniżej przedstawiono mały wykres, w którym wierzchołki są adresem e-mail. To jest w formacie GML:Python igraph: usuń wierzchołki z wykresu
Creator "igraph version 0.7 Sun Mar 29 20:15:45 2015"
Version 1
graph
[
directed 1
node
[
id 0
label "[email protected]"
]
node
[
id 1
label "[email protected]"
]
node
[
id 2
label "[email protected]"
]
node
[
id 3
label "[email protected]"
]
node
[
id 4
label "[email protected]"
]
node
[
id 5
label "[email protected]"
]
node
[
id 6
label "[email protected]"
]
node
[
id 7
label "[email protected]"
]
node
[
id 8
label "[email protected]"
]
node
[
id 9
label "[email protected]"
]
edge
[
source 5
target 5
weight 1
]
]
Mój kod to:
G = ig.read("enron_email_filtered.gml")
for v in G.vs:
print v['label']
if '@enron.com' not in v['label']:
G.delete_vertices(v.index)
print 'Deleted'
W tym zbiorze, 7-maile powinny zostać usunięte. Jednak na podstawie powyższego kodu usunięto tylko 5 e-maili.
I nie myśl, że możesz usuwać wierzchołki podczas iteracji nad 'G.vs'. Spróbuj je zebrać, a następnie usuń wszystkie naraz. –
To prawda - modyfikacje zestawu wierzchołków podczas iteracji na 'G.vs' dają nieprzewidywalne wyniki. –