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

如何基于指定颜色列表将pandas dataframe的单列拆分为颜色和名称两列

实现方案

直接使用pandas原生的字符串提取方法即可实现需求,不需要手动转列表循环处理:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'object_Id': ['obj00', 'obj01', 'obj02', 'obj03'],
    'object_detail': ['red mug', 'red bowl', 'green mug', 'white candle holder']
})
# 预定义颜色列表
COLOR = ['red', 'green', 'blue', 'white']

# 核心处理逻辑
color_pattern = '|'.join(COLOR)
df[['object_color', 'name']] = df['object_detail'].str.extract(fr'^({color_pattern})\s*(.*)$')

print(df)

运行后输出结果和你预期的完全一致:

object_Id        object_detail object_color            name
0     obj00              red mug          red             mug
1     obj01             red bowl          red            bowl
2     obj02            green mug        green             mug
3     obj03  white candle holder        white  candle holder

逻辑说明

  • 先把预定义的颜色列表拼接成正则可选匹配串,示例中的COLOR拼接后结果为red|green|blue|white
  • 正则fr'^({color_pattern})\s*(.*)$'中,^匹配字符串开头,第一个分组匹配开头的有效颜色,\s*跳过颜色后面的空格,第二个分组匹配剩余的所有内容作为物品名
  • str.extract会按照正则中的分组顺序,把匹配到的内容依次返回为多列,直接赋值给DataFrame的两个新列即可
  • 如果存在object_detail开头不是列表中颜色的情况,对应的object_color会返回NaN,你可以根据需要用fillna等方法后续处理异常值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:09:01