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

如何从Pandas DataFrame的产品字段中提取颜色信息

问题描述

我正在处理一个Pandas DataFrame,无法从产品字段中提取颜色信息,希望得到帮助。以下是数据集的产品列示例,我需要新增一列单独存储提取出的颜色,数据集中还有其他不同类型、不同颜色的产品。

示例输入数据

-------------------Product-------------------
youth room (160x220 cm, Dark Grey)
Fur Rugs in White - 55x80 cm

预期输出

-------------------Product--------------------------- Color ------
youth room (160x220 cm, Dark Grey)Dark Grey
Fur Rugs in White - 55x80 cmWhite

解决方案

方法1:正则表达式提取(适配文本模式)

观察示例数据的规律,颜色要么出现在括号内的逗号之后,要么跟随在"in"关键词后。可以用正则匹配这两种场景:

import pandas as pd
import re

# 构建示例DataFrame
data = {
    'Product': [
        'youth room (160x220 cm, Dark Grey)',
        'Fur Rugs in White - 55x80 cm'
    ]
}
df = pd.DataFrame(data)

# 定义颜色提取函数
def extract_color(text):
    # 匹配括号内逗号后的颜色
    bracket_match = re.search(r',\s*([A-Za-z\s]+)\)', text)
    if bracket_match:
        return bracket_match.group(1).strip()
    # 匹配"in "后的颜色(直到破折号前)
    in_match = re.search(r'in\s+([A-Za-z\s]+)\s*-', text)
    if in_match:
        return in_match.group(1).strip()
    # 无匹配时返回空值
    return None

# 新增Color列
df['Color'] = df['Product'].apply(extract_color)

print(df)

运行结果:

Product     Color
0  youth room (160x220 cm, Dark Grey)  Dark Grey
1        Fur Rugs in White - 55x80 cm      White

方法2:基于已知颜色列表匹配(准确率更高)

如果数据集中的颜色是固定的有限种类,可以预先定义颜色列表,通过模糊匹配提取:

import pandas as pd
from fuzzywuzzy import process  # 需先安装:pip install fuzzywuzzy python-Levenshtein

# 自定义已知颜色列表
color_list = ['Dark Grey', 'White', 'Black', 'Blue', 'Red', 'Light Brown']

data = {
    'Product': [
        'youth room (160x220 cm, Dark Grey)',
        'Fur Rugs in White - 55x80 cm'
    ]
}
df = pd.DataFrame(data)

# 匹配最相似的颜色(设置阈值避免误匹配)
def match_color(text):
    match, score = process.extractOne(text, color_list)
    return match if score > 80 else None

df['Color'] = df['Product'].apply(match_color)

print(df)

这种方法适合颜色范围明确的场景,能有效避免正则误匹配问题。


内容的提问来源于stack exchange,提问作者Orhan Dağ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:10:13