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

Python中DataFrame匹配城市ID并分配对应名称的实现问题

城市ID匹配城市名称的解决方案

我有一份城市信息表(含城市ID与对应名称)和一份用户数据表(含用户信息及关联城市ID),需要将城市表中的对应名称匹配到用户表的城市ID字段中。尝试用循环求交集的方法没得到预期效果,还要处理单个用户关联多个城市ID的场景,无匹配时要显示“no record”。


单个城市ID匹配场景

初始代码问题

原代码遍历的是DataFrame的列名而非行,且求交集的逻辑无法实现逐行匹配,导致结果不符合预期。

正确实现代码

import pandas as pd

# 构建城市映射表
city_data = [["LN", "London"], ["NY", "New York"], ["LE", "Leeds"]]
cities = pd.DataFrame(city_data, columns=['ID','City'])
# 转成字典实现快速查找
city_dict = cities.set_index('ID')['City'].to_dict()

# 用户数据表
user_data = [['Tom', 10, 'LN'], ['Nick', 15, 'XX'], ['Juli', 14, 'YY']]
user_df = pd.DataFrame(user_data, columns=['Name', 'Age', 'Adress'])

# 匹配城市名称,无匹配项填充"no record"
user_df['Result'] = user_df['Adress'].map(city_dict).fillna('no record')

print(user_df)

预期输出

Name  Age Adress     Result
0   Tom   10     LN     London
1  Nick   15     XX  no record
2  Juli   14     YY  no record

多个城市ID匹配场景

当用户的Adress字段包含多个用逗号分隔的城市ID时,需要按顺序逐个匹配,无匹配项保留“no record”。

正确实现代码

import pandas as pd

# 构建城市映射表
city_data = [["LN", "London"], ["NY", "New York"], ["LE", "Leeds"]]
cities = pd.DataFrame(city_data, columns=['ID','City'])
city_dict = cities.set_index('ID')['City'].to_dict()

# 带多城市ID的用户数据表
user_data = [['Tom', 10, 'LN, LE, XX'], ['Nick', 15, 'XX, LE'], ['Juli', 14, 'YY, LN']]
user_df = pd.DataFrame(user_data, columns=['Name', 'Age', 'Adress'])

# 定义多ID匹配函数
def match_multiple_cities(addr_str):
    # 拆分并去除每个ID的空格
    city_ids = [city_id.strip() for city_id in addr_str.split(',')]
    # 逐个匹配,无匹配返回"no record"
    matched_names = [city_dict.get(city_id, 'no record') for city_id in city_ids]
    # 拼接成字符串
    return ', '.join(matched_names)

# 应用函数生成结果列
user_df['Result'] = user_df['Adress'].apply(match_multiple_cities)

print(user_df)

预期输出

Name  Age      Adress                    Result
0   Tom   10  LN, LE, XX  London, Leeds, no record
1  Nick   15      XX, LE          no record, Leeds
2  Juli   14      YY, LN         no record, London

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:50:43