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

如何用Python从数据库取数据批量替换CSV列中的车辆名为对应ID?

批量用数据库映射替换CSV列内容

核心思路

先从数据库导出车辆名称-ID的映射字典,再用pandas的map()方法对CSV目标列做批量替换,比逐个写replace()高效得多,尤其适合几千条映射的场景。

步骤1:从数据库获取映射字典

假设你的数据库里有一张存储映射关系的表(比如叫vehicle_mappings),包含vehicle_name(车辆名称)和vehicle_id(对应ID)两列。用pandas直接读取这张表并转成字典:

import pandas as pd
import pymysql  # 也可以用SQLAlchemy、psycopg2等对应数据库的驱动

# 建立数据库连接
db_conn = pymysql.connect(
    host="你的数据库地址",
    user="数据库用户名",
    password="数据库密码",
    database="目标数据库名"
)

# 读取映射表数据
mapping_data = pd.read_sql("SELECT vehicle_name, vehicle_id FROM vehicle_mappings", db_conn)
# 转成{名称: ID}的字典格式
name_id_map = mapping_data.set_index("vehicle_name")["vehicle_id"].to_dict()

# 关闭数据库连接
db_conn.close()

步骤2:读取CSV并批量替换

用map()方法将CSV目标列的车辆名称替换为对应ID,还可以用fillna()处理找不到匹配项的情况:

# 读取原始CSV
csv_df = pd.read_csv("你的原始CSV文件路径.csv")

# 替换目标列(假设目标列名为`car_name`)
# 找不到匹配的名称时,可设置默认值,比如"未知ID"或保留原名称
csv_df["car_name"] = csv_df["car_name"].map(name_id_map).fillna("未知ID")

# 保存处理后的CSV
csv_df.to_csv("处理完成的CSV文件路径.csv", index=False)

额外优化:处理名称匹配偏差

如果CSV里的名称和数据库里的存在大小写、多余空格等差异,先统一清洗再映射:

# 清洗数据库映射的名称:去除首尾空格、转小写
mapping_data["vehicle_name"] = mapping_data["vehicle_name"].str.strip().str.lower()
# 清洗CSV目标列的名称
csv_df["car_name"] = csv_df["car_name"].str.strip().str.lower()

# 重新生成映射字典并替换
name_id_map = mapping_data.set_index("vehicle_name")["vehicle_id"].to_dict()
csv_df["car_name"] = csv_df["car_name"].map(name_id_map).fillna("未知ID")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:50:36