Pandas:如何检查字符串的前"n"个元素是否包含子串?

0 投票
1 回答
1179 浏览
提问于 2025-04-18 09:12

我知道怎么用 Pandas.Series.str.contains() 这个方法来检查一个字符串里是否包含另一个字符串。

不过,我想知道,怎么检查一个 Pandas Series 的前 "n" 个元素里是否包含这个子字符串呢?

这里有个我正在处理的糖链的例子:

Neu5Aca2-6Galb1-4GlcNAcb1-3Galb1-4GlcNAcb1-6(Galb1-3)GalNAca-Sp14
Neu5Aca2-6(Neu5Aca2-3Galb1-3)GalNAca-Sp14
Neu5Aca2-3Galb1-4GlcNAcb1-2Mana1-6(Neu5Aca2-6Galb1-4GlcNAcb1-2Mana1-3)Manb1-4GlcNAcb1-4GlcNAcb-Sp12
GalNAca1-3(Fuca1-2)Galb1-3GalNAca1-3(Fuca1-2)Galb1-4GlcNAcb-Sp0

我现在在用 str.contains() 来检查名字里是否有 a(2-3)a(2-6),但是第三个例子里 a2-6 同时出现在开头和中间。

我的目标是从每个字符串的前 n 个字母中提取出子字符串 a2-3。这可能吗?

1 个回答

1

你可以试着写一个正则表达式,让它更好地匹配你的数据。不过,如果你想在一个字符串的前n个字符中查找某个子串,可以使用 str.slice() 这个方法。

In [128]: glycans
Out[128]: 
0    Neu5Aca2-6Galb1-4GlcNAcb1-3Galb1-4GlcNAcb1-6(G...
1            Neu5Aca2-6(Neu5Aca2-3Galb1-3)GalNAca-Sp14
2    Neu5Aca2-3Galb1-4GlcNAcb1-2Mana1-6(Neu5Aca2-6G...
3    GalNAca1-3(Fuca1-2)Galb1-3GalNAca1-3(Fuca1-2)G...
dtype: object

In [134]: glycans.str.slice(0,10).str.contains('a2-3')
Out[134]: 
0    False
1    False
2     True
3    False
dtype: bool

撰写回答