Python Pandas str.contains()在某些情况下不起作用

Python Pandas str.contains()在某些情况下不起作用,python,pandas,Python,Pandas,我有一个脚本,它在成对条件之间进行线性建模: 数据帧如下所示: Accession Sequence variable value 0 O14548 [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L] DMSO 39.300171 1 O14548 [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L] DM

我有一个脚本,它在成对条件之间进行线性建模: 数据帧如下所示:

   Accession                                   Sequence variable        value
0     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO    39.300171
1     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO   132.637125
2     O14548                          [R].gLPDQMLYr.[T]     DMSO  1165.245826
3     O14548                          [R].gLPDQMLYr.[T]     DMSO   642.971908
4     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO    83.906058
5     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO   160.718841
6     O14548                          [R].gLPDQMLYr.[T]     DMSO  1240.856710
7     O14548                          [R].gLPDQMLYr.[T]     DMSO   557.508092
8     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO    56.228425
9     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO   302.346775
10    O14548                          [R].gLPDQMLYr.[T]     DMSO  1176.998098
11    O14548                          [R].gLPDQMLYr.[T]     DMSO   766.993819
12    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.387985
13    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.175678
14    O14548                          [R].gLPDQMLYr.[T]     CCCP   885.174420
15    O14548                          [R].gLPDQMLYr.[T]     CCCP   130.458963
16    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.557088
17    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.095801
18    O14548                          [R].gLPDQMLYr.[T]     CCCP   612.171540
19    O14548                          [R].gLPDQMLYr.[T]     CCCP    46.449990
20    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     6.016590
21    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.466220
22    O14548                          [R].gLPDQMLYr.[T]     CCCP   586.392482
23    O14548                          [R].gLPDQMLYr.[T]     CCCP   303.857624
24    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]      C+I    44.627773
25    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]      C+I     0.841494
26    O14548                          [R].gLPDQMLYr.[T]      C+I   632.355914
27    O14548                          [R].gLPDQMLYr.[T]      C+I   162.333292
28    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]      C+I    12.075158
29    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]      C+I   154.253098
30    O14548                          [R].gLPDQMLYr.[T]      C+I   159.767999
31    O14548                          [R].gLPDQMLYr.[T]      C+I  1031.399087
32    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]      C+I   150.724386
33    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]      C+I   260.684163
34    O14548                          [R].gLPDQMLYr.[T]      C+I   141.459156
35    O14548                          [R].gLPDQMLYr.[T]      C+I   262.659208
现在我想为每一对拟合一个线性模型。我通过以下代码获得配对:

def tessa(source):
    result = []
    for p1 in range(len(source)):
            for p2 in range(p1+1,len(source)):
                    result.append([source[p1],source[p2]])
    return result

unique_conditions = list(set(conditions))
pairs = tessa(unique_conditions)
print(pairs)
我在对上循环,并通过数据帧过滤条件:

for pair in pairs:
        
        pair.sort()
        print(pair)
        print(pair[0],pair[1])
        temp=melted_Peptides[(melted_Peptides['variable'].str.contains(pair[0]))|(melted_Peptides['variable'].str.contains(pair[1]))]
        print(temp)
问题来了。它无法正确过滤。此的输出:

['C+I', 'CCCP']
C+I CCCP
   Accession                                   Sequence variable       value
12    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP    0.387985
13    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP    0.175678
14    O14548                          [R].gLPDQMLYr.[T]     CCCP  885.174420
15    O14548                          [R].gLPDQMLYr.[T]     CCCP  130.458963
16    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP    0.557088
17    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP    0.095801
18    O14548                          [R].gLPDQMLYr.[T]     CCCP  612.171540
19    O14548                          [R].gLPDQMLYr.[T]     CCCP   46.449990
20    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP    6.016590
21    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP    0.466220
22    O14548                          [R].gLPDQMLYr.[T]     CCCP  586.392482
23    O14548                          [R].gLPDQMLYr.[T]     CCCP  303.857624
而对于下一个比较,它看起来还行:

['CCCP', 'DMSO']
CCCP DMSO
   Accession                                   Sequence variable        value
0     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO    39.300171
1     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO   132.637125
2     O14548                          [R].gLPDQMLYr.[T]     DMSO  1165.245826
3     O14548                          [R].gLPDQMLYr.[T]     DMSO   642.971908
4     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO    83.906058
5     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO   160.718841
6     O14548                          [R].gLPDQMLYr.[T]     DMSO  1240.856710
7     O14548                          [R].gLPDQMLYr.[T]     DMSO   557.508092
8     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO    56.228425
9     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO   302.346775
10    O14548                          [R].gLPDQMLYr.[T]     DMSO  1176.998098
11    O14548                          [R].gLPDQMLYr.[T]     DMSO   766.993819
12    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.387985
13    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.175678
14    O14548                          [R].gLPDQMLYr.[T]     CCCP   885.174420
15    O14548                          [R].gLPDQMLYr.[T]     CCCP   130.458963
16    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.557088
17    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.095801
18    O14548                          [R].gLPDQMLYr.[T]     CCCP   612.171540
19    O14548                          [R].gLPDQMLYr.[T]     CCCP    46.449990
20    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     6.016590
21    O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     CCCP     0.466220
22    O14548                          [R].gLPDQMLYr.[T]     CCCP   586.392482
23    O14548                          [R].gLPDQMLYr.[T]     CCCP   303.857624
第三种情况看起来又很奇怪:

['C+I', 'DMSO']
['C+I', 'DMSO']
C+I DMSO
   Accession                                   Sequence variable        value
0     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO    39.300171
1     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO   132.637125
2     O14548                          [R].gLPDQMLYr.[T]     DMSO  1165.245826
3     O14548                          [R].gLPDQMLYr.[T]     DMSO   642.971908
4     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO    83.906058
5     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO   160.718841
6     O14548                          [R].gLPDQMLYr.[T]     DMSO  1240.856710
7     O14548                          [R].gLPDQMLYr.[T]     DMSO   557.508092
8     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO    56.228425
9     O14548  [K].lAGAWASEAYSPQGLkPVVSTEAPPIIFATPTk.[L]     DMSO   302.346775
10    O14548                          [R].gLPDQMLYr.[T]     DMSO  1176.998098
11    O14548                          [R].gLPDQMLYr.[T]     DMSO   766.993819
我对大约5000个不同的数据帧使用相同的代码,并且始终有效。这些条件的名称完全相同,但在某些情况下,它会以某种方式中断


有人可以帮忙吗?

您可以添加
regex=False
参数,以避免将值转换为regex:


在regexp中,“+”是一个特殊符号。您应该替换
'C+I'。替换('+',r'\+')
我可以这样做,但这并不能解释为什么它适用于约5000个具有完全相同名称的不同数据帧。非常感谢。这很有效。然而,我想知道为什么它有时有效,有时无效。我有另一个具有完全相同条件名称的数据帧,在那里它工作得很好。@BobbyKlann-我认为应该有一些值,比如
+
|
什么是特殊的正则表达式字符,所以它通过正则表达式匹配。
melted_Peptides['variable'].str.contains(pair[0], regex=False)