代码之家  ›  专栏  ›  技术社区  ›  RustyShackleford

如何替换数据帧中每一行字符串的特定部分?

  •  0
  • RustyShackleford  · 技术社区  · 7 年前

    我有一个带有文件名列的df。文件名本身只包含我需要的一条信息,即ID。

    df:
    
    filename
    /path/to/file/in/folder 76317 1a2334bc-5d6e-7f89-123e-0f12fgf123.txt
    

    如何从“文件名”列中删除除此特定列的所有行上需要的ID之外的所有内容?

    4 回复  |  直到 7 年前
        1
  •  4
  •   sacuL    7 年前

    使用 str.extract 使用regex查找由两个空格包围的任何内容:

    >>> df
                                                filename
    0  /path/to/file/in/folder 76317 1a2334bc-5d6e-7f...
    1  /path/to/file/in/folder 76318 1a2334bc-5d6e-7f...
    
    df['filename'] = df.filename.str.extract('\s(.*)\s', expand=False)
    
    >>> df
      filename
    0    76317
    1    76318
    
        2
  •  1
  •   N Chauhan Nathan Hinchey    7 年前

    str.split() ?

    id = filename.split()[1]
    

    将文件名的每个部分用一个空格分隔,这个空格出现在每个文件中,并得到中间项,它是由返回的节列表中的索引1 split()

        3
  •  0
  •   darrahts    7 年前

    试试这个:

    for fileName in column:
        ID = fileName.split(' ')[1]
    

    之前

        4
  •  0
  •   Kevin K.    7 年前

    既然你知道确切的格式,你可以使用 split 和熊猫的 apply

    df['filename'] = df['filename'].apply(lambda x: x.split(' ')[1])