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

如何用numpy/pandas逐列检查数组元素是否存在于对应列(含逗号分隔元素)

实现方案

你可以用pandas或者numpy的原生字符串处理能力实现该需求,两种方案如下:

方案1:Pandas实现(代码更简洁,可读性更高)

import pandas as pd
import numpy as np

# 输入数据
x1 = np.array([['a','b','c'],['d','a','b'],['c','a,c','c']])
x2 = np.array(['d','c','d'])

# 匹配逻辑
df = pd.DataFrame(x1)
result = df.apply(
    lambda col: col.str.split(',').explode().eq(x2[col.name]).any()
).values

print(result)

输出结果:

array([ True,  True, False])

逻辑说明:对x1的每一列,先把每个单元格按逗号拆分后展开为独立行,再和x2对应位置的元素做等值匹配,只要该列存在至少一个匹配值就返回True。

方案2:纯NumPy实现(无需依赖pandas)

import numpy as np

# 输入数据
x1 = np.array([['a','b','c'],['d','a','b'],['c','a,c','c']])
x2 = np.array(['d','c','d'])

# 补逗号避免部分值误匹配,比如不会把"ac"里的"c"判定为匹配
x1_pad = np.char.add(np.char.add(',', x1), ',')
pattern = np.char.add(np.char.add(',', x2), ',')

# 逐列检查是否存在匹配项
result = np.array([
    np.any(np.char.find(x1_pad[:, idx], pattern[idx]) >= 0) 
    for idx in range(len(x2))
])

print(result)

输出结果和方案1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:57:03