我是Pandas的新手。我正在尝试从一个字符串中获取一个多重子串。但是我需要检查特定的开始和结束。如果它存在,我需要得到它的位置,哪个子串。如果不存在,打印"否"。示例:我需要搜索的词=要搜索的高/低位置= 7 - 10| 输入|产出|| - ------|- ------|| 你好世界|不适用|| 世界报|七,嗨|| 世界之花|8,低|final = final.赋值(结果= final.序列.字符串.查找('hi '|"洛"、7、10))
ugmeyewa1#
使用str.replace:
str.replace
target = 'hi|love' m = df['sequence'].str.contains(target) df.loc[m, 'output'] = (df.loc[m, 'sequence'] .str.replace(fr'.*({target}).*', lambda m: f'{m.start(1)+1},{m.group(1)}', regex=True) ) df.loc[~m, 'output'] = 'NA'
输出:
sequence output 0 HelloWorld NO 1 worldofhi 8,hi 2 worldoflove 8,love
使用的输入:
sequence 0 HelloWorld 1 worldofhi 2 worldoflove
target = 'hi|love' s = df['sequence'].str[7:10+1] m = s.str.contains(target) df.loc[m, 'output'] = (s[m] .str.replace(fr'.*({target}).*', lambda m: f'{m.start(1)+7+1},{m.group(1)}', regex=True) ) df.loc[~m, 'output'] = 'NA'
1条答案
按热度按时间ugmeyewa1#
使用
str.replace
:输出:
使用的输入:
仅在子字符串7:10中检查