You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何NetworkX无法读取pd.read_csv加载的CSV数据集文件?

解决NetworkX读取CSV数据集的错误问题

错误根源

  1. nx.read_weighted_edgelist() 和 nx.read_edgelist() 仅支持读取文件路径/文件流,不能直接传入pandas DataFrame,直接传df会导致函数错误解析数据结构。
  2. 你的CSV使用分号;作为分隔符,但pandas默认用逗号分隔,导致列未正确拆分,表头和数据被当成了单个字段,引发格式不匹配错误。

正确解决步骤

第一步:正确读取CSV文件

指定分隔符为分号,确保列被正确拆分:

import pandas as pd
# 指定sep=";"匹配CSV的分隔符
df = pd.read_csv("/Users/leokarl/Downloads/a2 (1).csv", sep=";")

第二步:将DataFrame转为NetworkX图(推荐方法)

使用NetworkX专门为DataFrame设计的from_pandas_edgelist函数,直接转换:

import networkx as nx
# 假设源节点列是ID1,目标节点列是ID2,权重列是%
# edge_attr指定要加入图的边缘属性,如需将属性名改为weight,可写成edge_attr={'%': 'weight'}
G = nx.from_pandas_edgelist(
    df,
    source='ID1',
    target='ID2',
    edge_attr='%',
    create_using=nx.Graph()  # 根据需求选择图类型,比如nx.DiGraph()对应有向图
)

备选方法(不推荐,适合特殊场景)

如果一定要用read_weighted_edgelist,可以先将DataFrame导出为符合格式的文本文件,再读取:

# 导出为空格分隔的边缘列表(无表头)
df.to_csv("/tmp/tmp_edgelist.csv", sep=" ", index=False, header=False)
# 读取临时文件
G = nx.read_weighted_edgelist("/tmp/tmp_edgelist.csv")

内容的提问来源于stack exchange,提问作者Karl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:32:11