홈>
compose ()를 사용하여 두 개의 그래프를 병합 한 후 GML 파일을 쓰려고 할 때 다음 오류 메시지가 나타납니다.
NetworkXError: 'user_id' is not a valid key
배경은 다음을 사용하여 두 개의 GML 파일을 가져 오는 것입니다.
g = nx.read_gml(file_path + "test_graph_1.gml")
h = nx.read_gml(file_path + "test_graph_2.gml")
각 GML 파일의 각 노드 파일은 다음과 같이 구성됩니다 :
node [
id 9
user_id "1663413990"
file "wingsscotland.dat"
label "brian_bilston"
image "/Users/ian/development/gtf/gtf/img/1663413990.jpg"
type "friends"
statuses 21085
friends 737
followers 53425
listed 550
ffr 72.4898
lfr 0.1029
shape "triangle-up"
]
각 파일을 가져온 후 모든 노드 속성을 확인할 수 있습니다. 각 그래프 내에서 노드가 고유한지 확인하십시오.
또한 NetworkX는 기본적으로 'id'필드를 버리고 'label'을 노드의 식별자로 사용합니다. 그것은 user_id 속성을 유지합니다 (이것은 Twitter user_id이며 내 목적에 잘 맞습니다).실행 중
list(f.nodes(data=True))
위의 노드에 대한 데이터는 다음과 같습니다.
('brian_bilston',
{'ffr': 72.4898,
'file': 'wingsscotland.dat',
'followers': 53425,
'friends': 737,
'image': '/Users/ian/development/gtf/gtf/img/1663413990.jpg',
'lfr': 0.1029,
'listed': 550,
'shape': 'triangle-up',
'statuses': 21085,
'type': 'friends',
'user_id': '1663413990'})
이 테스트의 경우, 그래프 g와 그래프 h가 공유하는 공통 노드가 하나 있습니다. 다른 모든 사용자는 user_id 및 레이블로 고유합니다.
그런 다음 다음을 사용하여 두 그래프를 병합합니다 :
f = nx.compose(g,h)
이 작동합니다.
그런 다음 그래프를 사용하여 새로운 GML을 작성합니다. f :
nx.write_gml(f, file_path + "one_plus_two.gml")
이 시점에서 위의 오류가 발생합니다 :
NetworkXError: 'user_id' is not a valid key
모든 user_id의 고유성을 확인했습니다 (복제 한 경우).
uid = nx.get_node_attributes(f,'user_id')
print(uid)
어느 출력 :
{'brian_bilston': '1663413990',
'ICMResearch': '100',
'justcswilliams': '200',
'MissBabington': '300',
'ProBirdRights': '400',
'FredSmith': '247775851',
'JasWatt': '160952087',
'Angela_Lewis': '2316946782',
'Fuzzpig54': '130136162',
'SonnyRussel': '828881340',
'JohnBird': '448476934',
'AngusMcAngus': '19785044'}
(가독성을 위해 형식화 됨)
따라서 모든 user_id는 내가 말할 수있는 한 독특합니다.
따라서 키의 고유성에 대한 질문이 아니라면 오류는 무엇입니까?
나는 이것에 대한 나의 생각을 소진했다!
포인터가 있으면 대단히 감사하겠습니다!
- 답변 # 1
관련 질문
- python : osmnx에서 동일한 folium의 가장자리와 경로를 그리는 방법
- python : .ipynb 파일의 모든 출력을 txt 파일로 저장하는 방법은 무엇입니까?
- python : 온라인 jupyter 노트북에서 웹캠을 열 수 없음
- python : 파이썬에서 그래프 가장자리 교차 확인하기
- python : 아나콘다를 사용하여 jupyter 노트북에 영어 공간 모델을 설치하는 방법
- python : Anaconda 업데이트 후 Jupyter Notebook 죽은 커널
- 텍스트 파일(.py)을 IPython 노트북 셀에 로드/편집/실행/저장하는 방법은 무엇입니까?
이 문제를 NextworkX GitHub 리포지토리에 게시하여 관리자가 답변했습니다.
참조 : https://github.com/networkx/networkx/issues/3100
아래에 그의 답변을 올렸습니다 :
와이즈 비즈 와이즈 비즈또한 설명서에 이에 대한 메모를 추가해야합니다.