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

Python实现将2列DataFrame转换为可适配不同规模的邻接矩阵

通用CSV转邻接矩阵实现方案

实现逻辑

  • 首先确认输入文件的规则:总记录数为节点数n的平方,每个节点对应n条记录,第二列的布尔值按顺序为该节点对应邻接矩阵的行值
  • 增加格式校验逻辑,避免非平方行数的非法输入
  • 可选增加按第一列排序的逻辑,适配第一列乱序的输入文件,通用性更强
  • 直接将第二列的布尔值重排列为n阶方阵即可得到目标邻接矩阵

完整可运行代码

# Importing needed libraries
import os.path
from math import sqrt
import numpy as np
import pandas as pd

# changing filepath to a variable name
fileName = "./testAlgorithm.csv"

# 检查文件是否存在
if not os.path.isfile(fileName):
    print(f"file {fileName} does not exist")
    exit()

# 读取CSV为DataFrame
df = pd.read_csv(fileName, header=None)

# 校验行数是否为完全平方数
total_lines = len(df)
n = int(sqrt(total_lines))
if n * n != total_lines:
    print("输入文件行数不是完全平方数,无法生成方阵邻接矩阵")
    exit()

# 可选:按第一列排序,适配第一列顺序混乱的输入,保证同节点记录连续
df = df.sort_values(by=0).reset_index(drop=True)

# 生成邻接矩阵
adj_matrix = df[1].values.reshape(n, n)

# 按要求格式输出
for row in adj_matrix:
    print("  ".join(map(str, row)))

输出验证

针对你提供的测试文件,运行上述代码将直接输出你预期的结果:

0  0  1  1
0  0  0  1
1  0  0  1
1  1  1  0

该方案天然支持任意规模的输入,只要输入文件符合总记录数=节点数²的规则,不需要修改代码即可直接适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:36:02