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

Python使用numpy.where或numpy.select做多字符串匹配赋值方案咨询

问题原因

你之前使用np.where和np.select无法得到预期结果的核心原因是:df['location'].isin(列表)的逻辑是判断整个单元格的字符串是否和列表中的某个值完全相等,但你的location列是多个城市拼接的字符串,自然无法完成匹配,这个问题和numpy本身的能力无关,是判断逻辑不符合你的业务场景。

最简实现方案

这类多城市匹配分区的场景,最简便的实现方式是先构造「城市-地理分区」的映射字典,再逐行拆分城市、匹配对应分区后拼接结果,完整可运行代码如下:

import pandas as pd

Europe = ['London', 'Paris', 'Berlin']
North_America = ['New York', 'Toroto', 'Boston']
Asia = ['Hong Kong', 'Tokyo', 'Singapore']

# 构造城市到分区的映射字典
city_region_map = {}
for city in Europe:
    city_region_map[city] = 'Europe'
for city in North_America:
    city_region_map[city] = 'North America'
for city in Asia:
    city_region_map[city] = 'Asia'

# 构造测试数据集
data = {'location':["London, Paris", "Hong Kong", "London, New York", "Singapore, Toroto", "Boston"]}
df = pd.DataFrame(data)

# 生成geo列
df['geo'] = df['location'].apply(lambda x: ', '.join([city_region_map[city] for city in x.split(', ')]))

运行后得到的df和你给出的预期输出完全一致。

关于Numpy实现的说明

理论上可以通过Numpy的向量化字符串操作完成拆分、匹配、拼接的逻辑,但实现过程远不如上述pandas方案简洁,可读性和维护性都更差,没有必要刻意使用Numpy实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:04