在R语言中基于起点行与终点行构建From-To矩阵的方法
最优实现方法:用Python Pandas快速构建矩阵
嘿,这个问题我太熟了!要把你给出的这份出行流量数据转换成以出发地(From)为行、目的地(To)为列的矩阵,最优的实现方法绝对是用Python的pandas库来处理——不仅效率高,还能自动处理可能的缺失值,哪怕以后数据量变大也能轻松hold住。
步骤拆解:
第一步:准备数据
先把你提供的原始数据转换成pandas可识别的格式,这里直接用列表嵌套的形式就可以:import pandas as pd # 你的原始出行数据 traffic_data = [ ["Paris", "London", 10], ["Paris", "HongKong", 8], ["London", "HongKong", 3], ["London", "Paris", 2], ["NewYork", "Paris", 5], ["NewYork", "HongKong", 4], ["NewYork", "London", 6], ["HongKong", "Paris", 12], ["HongKong", "London", 10], ["HongKong", "NewYork", 11] ]第二步:转换成DataFrame并构建矩阵
用pandas的pivot方法直接生成行/列对应的矩阵,同时用fillna(0)把没有数据的单元格填充为0(如果不需要填充可以去掉这部分):# 转成DataFrame结构 df = pd.DataFrame(traffic_data, columns=["From", "To", "Count"]) # 构建目标矩阵:行=From,列=To,值=Count,缺失值补0 traffic_matrix = df.pivot(index="From", columns="To", values="Count").fillna(0).astype(int) # 打印结果 print(traffic_matrix)最终输出的矩阵(Markdown格式)
运行代码后会得到如下结构化的矩阵:From HongKong London Paris NewYork Paris 8 10 0 0 London 3 0 2 0 NewYork 4 6 5 0 HongKong 0 10 12 11
补充:如果不想用代码(仅适合小数据量)
如果你的数据量很小,也可以手动构建Markdown表格:
- 先提取所有唯一的
From和To值作为行头和列头; - 逐个匹配每一行的(From, To)组合,把对应Count值填入单元格,没有数据的填0;
- 用Markdown表格语法整理成格式。
不过这种方法仅适合数据量极少的情况,一旦数据增多,手动操作很容易出错,所以还是推荐用pandas的方法。
内容的提问来源于stack exchange,提问作者Moni
相关产品推荐
相关产品推荐

