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

通过匹配两列高效为Pandas DataFrame新增站点名称列的最优方法

高效实现Pandas DataFrame站点名称匹配的方法

你的嵌套循环效率极低,因为Pandas的逐元素循环没有利用到底层的矢量化优化,数据量越大速度越慢。推荐用以下两种矢量化方法解决:

方法一:使用map()(简洁高效,适合仅需映射名称的场景)

先把站点编码和名称做成映射字典,再通过map()快速匹配:

# 构建站点code到name的映射字典
station_name_map = df_stations.set_index('code')['name'].to_dict()

# 为行程数据添加起始站点名称
df['start_station'] = df['start_station_code'].map(station_name_map)
# 添加结束站点名称
df['end_station'] = df['end_station_code'].map(station_name_map)

方法二:使用merge()(灵活扩展,适合需要关联更多字段的场景)

如果之后还需要获取站点的经纬度等信息,merge()更合适,可以分步关联起止站点的信息:

# 关联起始站点名称
df = df.merge(
    df_stations[['code', 'name']],
    left_on='start_station_code',
    right_on='code',
    how='left'
)
df = df.rename(columns={'name': 'start_station'}).drop('code', axis=1)

# 关联结束站点名称
df = df.merge(
    df_stations[['code', 'name']],
    left_on='end_station_code',
    right_on='code',
    how='left'
)
df = df.rename(columns={'name': 'end_station'}).drop('code', axis=1)

这两种方法都是Pandas内置的矢量化操作,底层用C实现,处理速度比嵌套循环快几个数量级,数据量越大优势越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:39:24