使用NetworkX读取.edg网络数据文件时类型转换错误原因排查
错误原因分析及解决办法
核心错误原因
- 类型转换错误根源:你设置了
nodetype=int,但文件中的节点是字符串类型(如Myriel),且文件第一行是表头source,程序会把表头字符串也尝试转为整数,直接触发类型转换失败。 - 后续格式化异常原因:第二次调用
read_edgelist时,未指定跳过表头行,程序会把第一行的source、target、value当成一条边的节点和数据解析,而表头的value是字符串,和实际数据的数值类型不匹配,导致解析格式异常。
正确读取方式
你的文件包含表头且带有value属性列,需用以下参数配置读取:
import networkx as nx import matplotlib.pyplot as plt %matplotlib inline # 读取带表头的边列表,跳过表头行,指定节点为字符串类型,同时读取value属性 G = nx.read_edgelist( "les_miserables_edge_file.edg", nodetype=str, data=(("value", int),), # 声明value列的类型为整数 skiprows=1, # 跳过第一行表头 create_using=nx.DiGraph() # 按需创建有向图 )
补充说明
NetworkX的read_edgelist默认假设文件无表头,所有行都是边数据。若文件带表头,必须通过skiprows=1跳过第一行;需根据节点实际类型设置nodetype,不能强行转为不匹配的类型;当边带有属性(如这里的value)时,要用data参数声明属性的名称和类型,确保解析正确。
内容的提问来源于stack exchange,提问作者user21370174
相关产品推荐
相关产品推荐

