Python 如何替换数据帧每行上字符串的特定部分?
我有一个带有文件名列的df。文件名本身只包含我需要的一段信息,即IDPython 如何替换数据帧每行上字符串的特定部分?,python,string,python-3.x,pandas,Python,String,Python 3.x,Pandas,我有一个带有文件名列的df。文件名本身只包含我需要的一段信息,即ID df: filename /path/to/file/in/folder 76317 1a2334bc-5d6e-7f89-123e-0f12fgf123.txt 我只需要文件夹后面和散列之前的部分。所以在这个例子中是76317。文件夹中的所有文件都有文件夹路径、空间、我需要的ID以及与文件名其余部分的空间 如何从“文件名”列中删除除此特定列的所有行上需要的ID之外的所有内容 我不确定您的具体实现,但您是否尝试过使用str
df:
filename
/path/to/file/in/folder 76317 1a2334bc-5d6e-7f89-123e-0f12fgf123.txt
我只需要文件夹后面和散列之前的部分。所以在这个例子中是76317。文件夹中的所有文件都有文件夹路径、空间、我需要的ID以及与文件名其余部分的空间
如何从“文件名”列中删除除此特定列的所有行上需要的ID之外的所有内容 我不确定您的具体实现,但您是否尝试过使用
str.split()
将文件名的每个部分按您所说的在每个文件中出现的空格分割,并获取中间项,即
Split()
返回的节列表中的索引1 我不确定您的具体实现,但您是否尝试过使用str.split()
将文件名的每个部分按您所说的在每个文件中出现的空格分割,并获取中间项,即
Split()
返回的节列表中的索引1 使用带有正则表达式的str.extract
,该正则表达式查找由两个空格包围的任何内容:
>>> 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.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
试试这个:
for fileName in column:
ID = fileName.split(' ')[1]
但是,您应该在将字符串放入数据帧之前尝试这种方法,这样就不会对它们进行两次迭代 试试这个:
for fileName in column:
ID = fileName.split(' ')[1]
但是,您应该在将字符串放入数据帧之前尝试这种方法,这样就不会对它们进行两次迭代 由于您知道确切的格式,您可以将
split
与panda的:
由于您知道确切的格式,因此可以将
split
与panda的:
假设间距如他所建议的那样,使这项工作非常好@RushabhMehta间距完全相同。多谢各位much@RustyShackleford我想说的是sacul的答案是stable@RushabhMehta怎么会这样呢?假设间距是他建议的,这真的很好@RushabhMehta间距完全相同。多谢各位much@RustyShackleford我想说的是sacul的答案是stable@RushabhMehta怎么会呢?这也行。我将使用这个答案,因为它更稳定。这同样有效。我将使用这个答案,因为它更稳定。