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

Networkx读取pandas邻接矩阵时报非正方形错误如何排查

可能的原因
  • 你打印矩阵的位置和调用nx.from_pandas_adjacency的位置中间存在修改矩阵结构的代码,你看到的74x74是修改前的矩阵状态,调用函数时矩阵已经被修改为74行76列
  • 矩阵的行索引和列名没有完全对齐,即使行数和列数表面一致,存在行有但列没有、或者列有但行没有的标签,networkx在转换时会自动补全导致维度变化
  • 行索引或列名存在重复值,pandas内部对齐逻辑出错,转numpy数组时出现维度异常
  • pandas打印截断导致显示误差,你看到的[74 rows x 74 columns]是截断后的错误显示,实际矩阵维度确实是74x76
排查步骤
  1. 必须在nx.from_pandas_adjacency(matrix)的前一行添加校验代码,不要使用之前的打印结果作为判断依据:
# 确认实际维度
print("矩阵实际维度:", matrix.shape)
# 确认行列标签是否完全一致
print("行列标签是否一致:", matrix.index.equals(matrix.columns))
# 查看行列标签的差异
print("行列标签差异:", matrix.index.symmetric_difference(matrix.columns).tolist())
# 确认转成numpy数组后的实际维度
print("转numpy后维度:", matrix.to_numpy().shape)
# 检查是否有重复的行/列标签
print("行索引是否有重复:", matrix.index.has_duplicates)
print("列名是否有重复:", matrix.columns.has_duplicates)
  1. 如果校验后发现行列标签不一致或维度不对,可直接强制对齐矩阵:
# 强制以列名为标准,对齐行和列,缺失值补0
matrix = matrix.reindex(index=matrix.columns, columns=matrix.columns, fill_value=0)
  1. 额外优化:你后续用Pyvis添加节点边的代码可以简化,不需要手动遍历:
N.from_nx(G)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:24:05