Pandas:如何检查字符串的前"n"个元素是否包含子串?
我知道怎么用 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