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

Pandas DataFrame中列值与列表前两项匹配的判断问题

问题分析与解决方案

你的代码出错的原因是 np.isin 的工作方式不符合预期:它会把所有行的list_of_numbers前两项合并成一个全局集合,然后检查每个number是否存在于这个集合中,而不是和当前行的列表前两项做逐行对比。

比如你的例子里,[x[0:2] for x in df['list_of_numbers']]生成的是[[1,3], [6,7], [13,12]],np.isin会把它扁平化为[1,3,6,7,13,12]。第三行的3虽然不在自己行的前两项[13,12]里,但存在于全局集合中,所以返回了True。

正确的实现方式

你需要做逐行判断,这里有两种简单的方法:

方法1:使用pandas.DataFrame.apply

import pandas as pd
df = pd.DataFrame({'number': [1, 2, 3], 'list_of_numbers': [[1, 3 ,2 ,5], [6 ,7 ,8 ,2 ,10], [13 ,12 ,13 ,14 ,3]]})
df['check'] = df.apply(lambda row: row['number'] in row['list_of_numbers'][:2], axis=1)

方法2:使用列表推导式(速度更快)

import pandas as pd
df = pd.DataFrame({'number': [1, 2, 3], 'list_of_numbers': [[1, 3 ,2 ,5], [6 ,7 ,8 ,2 ,10], [13 ,12 ,13 ,14 ,3]]})
df['check'] = [num in lst[:2] for num, lst in zip(df['number'], df['list_of_numbers'])]

两种方法都会得到你预期的结果:[True, False, False]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:50:03