Python 熊猫:str.包含第一个单词,后跟冒号

Python 熊猫:str.包含第一个单词,后跟冒号,python,pandas,Python,Pandas,我试图理解如何识别以单词开头,紧接着是冒号的列 我试着确定它应该匹配少于9个字符,后跟一个冒号,但并不缺少 示例如下: 迈克尔:应该把它捡起来 熊猫不应该捡起这些东西:( 这也不应该被熊猫捡到 我用str.contains和str.match尝试了多种方法,但似乎找不到解决方案。任何建议都将不胜感激 谢谢。下面的函数应该可以完成这项工作 def check(s): s = s.split(":") if len(s) < 2: retur

我试图理解如何识别以单词开头,紧接着是冒号的列

我试着确定它应该匹配少于9个字符,后跟一个冒号,但并不缺少

示例如下:

  • 迈克尔:应该把它捡起来
  • 熊猫不应该捡起这些东西:(
  • 这也不应该被熊猫捡到
  • 我用str.contains和str.match尝试了多种方法,但似乎找不到解决方案。任何建议都将不胜感激


    谢谢。

    下面的函数应该可以完成这项工作

    def check(s):
        s = s.split(":")
        if len(s) < 2:
            return False
        s = s[0].split(" ")
        if len(s) == 1:
            return True
        return False
    
    
    df["identified_rows"] = df["some_column"].apply(check)
    
    def检查:
    s=s.split(“:”)
    如果长度小于2:
    返回错误
    s=s[0]。拆分(“”)
    如果len=1:
    返回真值
    返回错误
    df[“已识别的行”]=df[“某些列”]。应用(检查)
    
    我们使用冒号分割文本,如果分割中没有冒号,将返回长度为1的列表,该值小于2,因此将返回false


    接下来,我们获取列表的第一个元素,并使用空格将其拆分,如果字符串不包含空格,则s的长度为1,函数将返回True,否则函数将返回False。

    str.match将接受一个正则表达式。似乎您希望匹配由任意数量的连续lette组成的序列rs,大写或小写,后面紧跟着一个冒号和一个空格;你不在乎后面会出现什么。在这种情况下,请尝试下面的代码

    import pandas as pd
    
    df = pd.DataFrame(
        ['Michael: this should be picked up pandas',
         'This should not be picked up by pandas :(',
         'This should not: be picked up by pandas either.'],
        columns=['TestColumn']
        )
    df['StartsWithWord'] = df.TestColumn.str.match(r'[A-Za-z]+: .*')
    
    print(df)
    
    这将产生以下输出

                                            TestColumn  StartsWithWord
    0         Michael: this should be picked up pandas            True
    1        This should not be picked up by pandas :(           False
    2  This should not: be picked up by pandas either.           False
    

    谢谢你,弗雷德!