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

在Pandas列中搜索字符串并获取初始位置的紧凑实现

问题

给定如下DataFrame:

import pandas as pd
data = {'Description':  ['with chicken', 'champagne', 'Chicken', 'bananas and chicken', 'fafsa Lemons', 'GIN CHICKEN'],}
df = pd.DataFrame(data)
print(df)

需要在Description列中不区分大小写搜索字符串"chicken",若存在则获取其在对应字符串中的起始位置(示例中"chicken"起始位置为1,采用1索引而非0索引),不存在则标记为NA,期望输出如下:

data = {'Description':  ['with chicken', 'champagne', 'chicken', 'bananas and chicken','fafsa Lemons', 'GIN CHICKEN'],
       'ChickenPosition':  ['6', 'NA', '1', '13', 'NA', '5']
       }
df = pd.DataFrame(data)
print(df)

求无需多步骤的极简紧凑实现代码。

极简实现代码

核心逻辑用一行代码完成,直接通过字符串方法链式调用实现需求:

import pandas as pd

data = {'Description':  ['with chicken', 'champagne', 'Chicken', 'bananas and chicken', 'fafsa Lemons', 'GIN CHICKEN'],}
df = pd.DataFrame(data)

# 核心实现
df['ChickenPosition'] = df['Description'].str.lower().str.find('chicken').add(1).replace(-1, 'NA').astype(str)

print(df)

代码说明

  • str.lower():将列中所有字符串转为小写,实现不区分大小写的匹配
  • str.find('chicken'):返回目标字符串的0起始索引,不存在则返回-1
  • .add(1):将0索引转换为示例要求的1起始索引
  • .replace(-1, 'NA'):把匹配失败的-1替换为指定的NA标记
  • .astype(str):将结果转为字符串类型,与示例输出格式保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:33:27