Pandas:查找字符串中子串的起始和结束位置
解决Pandas中获取子串结束位置的问题
你可以通过起始位置 + 子串长度 - 1来计算结束位置(因为字符串索引从0开始),直接在assign里新增end列即可,具体代码如下:
import pandas as pd from numpy.core.defchararray import find # 创建原DataFrame df = pd.DataFrame({ "string": ["abc", "def", "ghi"], "substring": ["bc", "e", "ghi"] }) # 同时计算start和end列 result_df = df.assign( start=find(df['string'].values.astype(str), df['substring'].values.astype(str)), end=lambda x: x['start'] + x['substring'].str.len() - 1 ) print(result_df)
运行后输出结果:
string substring start end 0 abc bc 1 2 1 def e 1 1 2 ghi ghi 0 2
完全符合你期望的结果。这里用lambda函数在assign里直接基于已生成的start列和子串长度计算结束位置,简洁高效。
内容的提问来源于stack exchange,提问作者Blob
相关产品推荐
相关产品推荐

