如何用Python的Pandas读取Excel相邻单元格构建站点邻接表图结构
解决方案:用Pandas处理Excel数据构建邻接表
步骤1:读取完整的目标列数据
首先需要读取Excel中的B、C、D三列(对应起始站点、关联站点、行程时间),并给列命名提升代码可读性:
import pandas as pd # 读取B、C、D三列数据 df = pd.read_excel(r'myfile.xlsx', usecols="B:D") # 重命名列,方便后续操作 df.columns = ["node1", "node2", "weight"]
步骤2:过滤无效数据
只保留关联站点不为空的行,同时确保行程时间为整数类型:
# 过滤掉关联站点为空的无效行 df = df.dropna(subset=["node2"]) # 将行程时间转为整数,匹配需求中的数据格式 df["weight"] = df["weight"].astype(int)
步骤3:构建节点集并添加边到图中
注意:仅从B列提取节点可能遗漏C列中存在的站点,因此需要合并B、C列的所有站点作为完整节点集,再遍历每行数据调用add_edge:
# 提取所有站点作为图的节点集合 nodes = set(df["node1"].tolist() + df["node2"].tolist()) # 初始化图实例 g = Graph(nodes) # 遍历每行数据,向邻接表添加边 for _, row in df.iterrows(): g.add_edge(row["node1"], row["node2"], row["weight"]) # 打印验证图结构 g.print_graph()
补充说明
- 用Pandas的
dropna过滤空行,比手动循环检查单元格更高效简洁 - 合并B、C列站点作为节点集,避免出现“节点不存在于邻接表”的异常
- 若你的Excel表头本身有明确名称,可跳过
df.columns重命名步骤,直接使用原始列名操作
内容的提问来源于stack exchange,提问作者caman177
相关产品推荐
相关产品推荐

