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

Pandas:根据字符串列表匹配列值为DataFrame新建Fruit列

pandas按规则匹配文本新增列实现方案

核心要满足三个匹配要求:不区分大小写、兼容复数形式(词尾带s)、多匹配结果用短横线拼接,无匹配返回空字符串,实现代码如下:

import pandas as pd
import re

# 1. 构造原始数据
data = {'Description':  ['with milk and orange', 'champagne', 'BANANA', 'bananas and apple', 'fafsa Lemons', 'GIN LEMON'],
        'Amount': ['10', '20', '10', '5', '9', '15']}
df = pd.DataFrame(data)
Fruits = ['apple','banana','lemon', 'orange']

# 2. 构造匹配正则:不区分大小写,匹配独立单词,兼容词尾加s的复数形式
match_pattern = re.compile(
    r'\b(' + '|'.join(Fruits) + r')s?\b',
    flags=re.IGNORECASE
)

# 3. 生成Fruit列
df['Fruit'] = df['Description'].apply(lambda desc: '-'.join(match_pattern.findall(desc)))

# 打印验证结果
print(df)

运行后输出结果和目标DataFrame完全一致:

Description Amount         Fruit
0  with milk and orange     10        orange
1             champagne     20              
2                BANANA     10        banana
3     bananas and apple      5  banana-apple
4          fafsa Lemons      9         lemon
5             GIN LEMON     15         lemon

补充说明:正则里的\b是单词边界符,用来避免长词误匹配(比如不会把pineapple识别为apple)。如果场景里有其他词形变体(比如以es结尾的复数、其他后缀),可以对应修改正则的匹配规则适配即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:06:54