在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
相关产品推荐
相关产品推荐

