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

如何将Python输出的steps和waycategory值生成匹配的Excel表格

问题根因与解决方案

核心问题所在

你现在的实现思路核心问题是两类数据的拆分维度完全不同,天然行数不可能一致:

  • steps列表是按导航指引动作拆分,每一行对应一次驾驶/步行指引(比如左转、直行、到达终点),一个指引段可能连续经过多种不同类别的道路
  • waycategory的values列表是按道路属性拆分,只要道路类别发生变化就会新增一行,同一个导航指引段可能对应多条waycategory记录
    直接分别导出两个表格自然无法对齐。

正确对齐方案

关联的核心依据是way_points索引范围:每个step的way_points字段存储的是当前指引段对应的路径点起始、结束索引(格式为[起始索引, 结束索引]),只要waycategory记录的索引范围和step的索引范围有重叠,就属于对应的关联关系。
提供两种常用的对齐方案:

方案1:保留全明细,展开为多行

最终行数和waycategory的values行数一致,每条waycategory记录都附带对应的step信息,适合需要全量明细的场景。
实现代码:

import pandas as pd
from openpyxl import load_workbook

# 提取原始数据
steps = data['features'][0]['properties']['segments'][0]['steps']
way_cates = data['features'][0]['properties']['extras']['waycategory']['values']

# 转为DataFrame并拆分索引字段
df_steps = pd.DataFrame(steps, columns=['distance', 'duration', 'type', 'instruction', 'name', 'way_points', 'exit_number'])
df_steps[['step_start_idx', 'step_end_idx']] = pd.DataFrame(df_steps['way_points'].to_list(), index=df_steps.index)

df_cates = pd.DataFrame(way_cates, columns=['cate_start_idx', 'cate_end_idx', 'way_category'])

# 关联匹配重叠区间
df_merged = df_steps.assign(tmp_key=1).merge(df_cates.assign(tmp_key=1), on='tmp_key').drop('tmp_key', axis=1)
df_merged = df_merged[
    (df_merged['cate_start_idx'] < df_merged['step_end_idx']) &
    (df_merged['cate_end_idx'] > df_merged['step_start_idx'])
]

# 导出到统一Excel
output_path = r'c:\data\对齐后路径数据.xlsx'
book = load_workbook(output_path)
writer = pd.ExcelWriter(output_path, engine='openpyxl')
writer.book = book
df_merged.to_excel(writer, sheet_name='全量匹配数据', index=False)
writer.save()
writer.close()

方案2:单step对应单行,合并类别字段

最终行数和steps行数一致,每个导航指引只占一行,多个类别合并为单个字段,适合需要step为统计单元的场景。
核心合并代码(承接上面的df_merged):

# 合并同一个step对应的所有道路类别为顿号分隔的字符串
df_step_align = df_merged.groupby(
    ['distance', 'duration', 'type', 'instruction', 'name', 'way_points', 'exit_number']
)['way_category'].apply(lambda x: '、'.join(x.astype(str))).reset_index()

# 直接导出df_step_align即可
output_path = r'c:\data\对齐后路径数据.xlsx'
book = load_workbook(output_path)
writer = pd.ExcelWriter(output_path, engine='openpyxl')
writer.book = book
df_step_align.to_excel(writer, sheet_name='按指引对齐数据', index=False)
writer.save()
writer.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 19:36:03