识别字符串是否仅包含特定文本

时间:2019-05-30 19:22:54

标签: python

我有一列包含一个字符串,该字符串有时具有一个名称,两个名称或多个用分号分隔的名称。我想确定某行是否与所有指定的名称匹配,但是如果某行仅包含某些指定的名称,则不可以。

SME

第1行-约翰;拉尔夫;苏珊;乔

第2行-拉尔夫

第3行-苏珊;拉尔夫;罗伯特;玛格丽特

第4行-Ralph; Susan

df1['SME'] = df1.SMES.str.ONLY contains('Ralph', na=False, case=True) 
df2['SME'] = df1.SMES.str.ONLY contains('Ralph;Susan', na=False, case=True)

期待df1

第1行-错误

第2行-正确

第3行-错误

第4行-错误

期待df2

第1行-错误

第2行-错误

第3行-错误

第4行-正确

3 个答案:

答案 0 :(得分:0)

要检查确切的值,您可以像这样在df中放置一个条件:

xp_cmdshell

如果只想使用true / false值,则可以使用以下条件创建掩码:

df1[df1['SME'] == 'Ralph']

答案 1 :(得分:0)

做一些lambda函数:

f1 = lambda x: True if 'Ralph' in x else False

因此,您将.apply新建一列。

df['has_Ralph'] = df['SME'].apply(f1)

因此yu可以选择以下列:

df_Ralph = df[df['SME'] == True]

答案 2 :(得分:0)

我找到了一个在线python编辑器:https://www.onlinegdb.com/online_python_compiler

Row1 = "John;Ralph;Susan;Joe"
Row2 = "Ralph"
Row3 = "Susan;Ralph;Robert;Margaret"
Row4 = "Ralph;Susan"

Find1 = "Ralph"
Find2 = "Ralph;Susan"
Find3 = "Susan;Ralph"

def ContainsAllOf(Row,Find):
    Result = 'False'
    Rows = Row.split(';')
    Finds = Find.split(';')
    if len(Rows) == len(Finds):
        difference = [r for r in Rows if r not in Finds]
        if len(difference) == 0:
            Result = 'True'
    print(Row + '\n' + Find + '\n' + Result + '\n')

ContainsAllOf(Row1,Find1)
ContainsAllOf(Row2,Find1)
ContainsAllOf(Row3,Find1)
ContainsAllOf(Row4,Find1)

ContainsAllOf(Row1,Find2)
ContainsAllOf(Row2,Find2)
ContainsAllOf(Row3,Find2)
ContainsAllOf(Row4,Find2)

ContainsAllOf(Row1,Find3)
ContainsAllOf(Row2,Find3)
ContainsAllOf(Row3,Find3)
ContainsAllOf(Row4,Find3)

以下是输出:

John;Ralph;Susan;Joe                                                                    
Ralph                                                                                   
False                                                                                   

Ralph                                                                                   
Ralph                                                                                   
True                                                                                    

Susan;Ralph;Robert;Margaret                                                             
Ralph                                                                                   
False                                                                                   

Ralph;Susan                                                                             
Ralph                                                                                   
False                                                                                   

John;Ralph;Susan;Joe                                                                    
Ralph;Susan                                                                             
False                                                                                   

Ralph                                                                                   
Ralph;Susan                                                                             
False                                                                                   

Susan;Ralph;Robert;Margaret                                                             
Ralph;Susan                                                                             
False                                                                                   

Ralph;Susan                                                                             
Ralph;Susan                                                                             
True                                                                                    

John;Ralph;Susan;Joe                                                                    
Susan;Ralph                                                                             
False                                                                                   

Ralph                                                                                   
Susan;Ralph                                                                             
False                                                                                   

Susan;Ralph;Robert;Margaret                                                             
Susan;Ralph                                                                             
False                                                                                   

Ralph;Susan                                                                             
Susan;Ralph                                                                             
True