pandas 在panda中使用正则表达式获取子字符串

rvpgvaaj  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(106)

我是Pandas的新手。我正在尝试从一个字符串中获取一个多重子串。但是我需要检查特定的开始和结束。
如果它存在,我需要得到它的位置,哪个子串。如果不存在,打印"否"。
示例:
我需要搜索的词=要搜索的高/低位置= 7 - 10
| 输入|产出|
| - ------|- ------|
| 你好世界|不适用|
| 世界报|七,嗨|
| 世界之花|8,低|
final = final.赋值(结果= final.序列.字符串.查找('hi '|"洛"、7、10))

ugmeyewa

ugmeyewa1#

使用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
仅在子字符串7:10中检查
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'

相关问题