我是Pandas的新手。我正在尝试从一个字符串中获取一个多重子串。但是我需要检查特定的开始和结束。如果它存在,我需要得到它的位置,哪个子串。
bfnvny8b1#
使用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条答案
按热度按时间bfnvny8b1#
使用
str.replace
:输出:
使用的输入:
仅在子字符串7:10中检查