繁体   English   中英

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

[英]How to do replace particular part of string on every row of dataframe?

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

df:

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

我只需要文件夹之后和哈希之前的部分。 因此,在本例中为76317。文件夹中的所有文件都具有文件夹路径,空间,我需要的ID和具有其余文件名的空间。

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

str.extract与正则表达式一起使用,该正则表达式查找由2个空格包围的所有内容:

>>> 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

我不确定您的确切实现方式,但是您尝试使用str.split()吗?

id = filename.split()[1]

用您说过的每个文件中的空格分隔文件名的每个部分,然后获取中间项,即split()返回的节列表中的索引1。

尝试这个:

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

但是,您应该将字符串放入数据框之前尝试这种方法,因此您不必对其进行两次迭代。

由于您知道确切的格式,因此可以将split与panda的apply一起使用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM