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

如何基于另一列是否包含列表值创建新的DataFrame列?

解决方案

方法1:利用pandas字符串方法(高效推荐)

通过str.contains结合正则表达式批量匹配列表中的元素,是处理这类问题的高效方式:

import pandas as pd

# 初始化原始数据
df = pd.DataFrame({
    'a': ['apple2876', '3pear6', '12banana28', '1ab33pie2', '2rbbwater'],
    'b': ['red'] * 5
})

# 定义需要匹配的元素列表
target_elements = ['apple', 'banana', 'water']

# 将列表转为正则匹配模式,匹配任意一个元素
match_pattern = '|'.join(target_elements)

# 创建新列c:匹配到元素则为1,否则为0
df['c'] = df['a'].str.contains(match_pattern).astype(int)

方法2:自定义函数遍历(逻辑直观)

如果需要更直观的逻辑控制,可以用apply结合自定义函数实现:

import pandas as pd

df = pd.DataFrame({
    'a': ['apple2876', '3pear6', '12banana28', '1ab33pie2', '2rbbwater'],
    'b': ['red'] * 5
})

target_elements = ['apple', 'banana', 'water']

def check_match(text):
    for elem in target_elements:
        if elem in text:
            return 1
    return 0

df['c'] = df['a'].apply(check_match)

执行上述任意一种方法后,即可得到目标DataFrame,新列c会根据列a是否包含列表中的元素标记1或0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:45:44