熊猫:如何检查第一个" n"字符串的元素是否包含子字符串?

时间:2014-06-09 21:41:25

标签: python string pandas

我知道如何使用Pandas.Series.str.contains()方法检查子字符串是否存在于另一个子字符串中。

然而,我想知道,我们如何检查第一个" n" Pandas Series.str的元素包含子串?

以下是我正在使用的一些聚糖的例子:

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出现在开头和中间。

我的目标是将子串a2-3与每个字符串中的第一个n字母隔离开来。这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以构建一个更干净地匹配数据的正则表达式,但您可以使用str.slice()方法在字符串的前n个字符中搜索子字符串

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