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

如何在Pandas DataFrame中判断一列值是否包含另一列值?

解决DataFrame逐行判断列值包含关系的问题

你遇到的问题是str.contains()默认接收单一字符串/正则表达式,无法直接传入Series实现逐行匹配。以下是可行的解决方法:

步骤1:构造示例数据

import pandas as pd

df = pd.DataFrame({
    'name1': ['aa', 'xyz'],
    'name2': ['aab', 'x']
})

步骤2:逐行判断包含关系

使用apply()方法逐行遍历DataFrame,对每行的两个列值进行包含检查:

# 判断name1是否包含name2
df['name1_contains_name2'] = df.apply(lambda row: row['name2'] in row['name1'], axis=1)
# 判断name2是否包含name1
df['name2_contains_name1'] = df.apply(lambda row: row['name1'] in row['name2'], axis=1)

结果验证

运行上述代码后,得到的DataFrame与你期望的一致:

name1 name2  name1_contains_name2  name2_contains_name1
0    aa   aab                  False                   True
1   xyz     x                   True                  False

原代码失效原因

df.name1.str.contains(df.name2)会将整个name2 Series作为正则表达式参数传入,而非逐行取对应位置的值进行匹配,因此无法得到正确结果。apply(axis=1)则会针对每一行单独处理两个列的取值,实现精准的逐行包含判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:32:11