如何将Pandas DataFrame索引路线转换为坐标列表?
问题描述
我有如下结构的Pandas DataFrame:
Adress Demand Coordinates 0 Depot 10 (40.7484405, -73.985664399) 1 Solomon R. Guggenheim Museum 15 (40.7829796, -73.9589706) 2 Museum of the City of New York 20 (40.7924939, -73.951908899) 3 Rockefeller Center 15 (40.7587402, -73.9786736) 4 Bryant Park 10 (40.7535965, -73.9832326) 5 Lower East Side Tenement Museum 20 (40.718818, -73.9900876)
同时有如下三条路线的列表:
routes=[[0, 2, 5 , 0], [0, 4, 3, 0], [0, 1, 0]]
如何将路线列表中的DataFrame索引替换为对应的坐标值,得到目标格式的坐标路线列表?
解决方案
可以通过两步快速实现:
1. 预处理坐标列
先把DataFrame中Coordinates列的元组转换成列表格式,方便后续直接调用:
df['Coordinates'] = df['Coordinates'].apply(list)
2. 生成坐标路线列表
用嵌套列表推导式遍历每条路线,将每个索引替换为对应的坐标值:
coord_routes = [[df['Coordinates'][idx] for idx in route] for route in routes]
完整代码示例
import pandas as pd # 构造目标DataFrame data = { 'Adress': ['Depot', 'Solomon R. Guggenheim Museum', 'Museum of the City of New York', 'Rockefeller Center', 'Bryant Park', 'Lower East Side Tenement Museum'], 'Demand': [10, 15, 20, 15, 10, 20], 'Coordinates': [(40.7484405, -73.985664399), (40.7829796, -73.9589706), (40.7924939, -73.951908899), (40.7587402, -73.9786736), (40.7535965, -73.9832326), (40.718818, -73.9900876)] } df = pd.DataFrame(data) # 转换坐标格式 df['Coordinates'] = df['Coordinates'].apply(list) # 定义路线列表 routes = [[0, 2, 5 , 0], [0, 4, 3, 0], [0, 1, 0]] # 生成坐标路线 coord_routes = [[df['Coordinates'][idx] for idx in route] for route in routes] # 输出结果 print(coord_routes)
运行后会得到符合要求的坐标路线列表,注意原示例中第二条路线的第三个坐标存在错误,上述代码会输出索引3对应的正确坐标[40.7587402, -73.9786736]。
内容的提问来源于stack exchange,提问作者chilli93
相关产品推荐
相关产品推荐

