Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何替换数据帧每行上字符串的特定部分?_Python_String_Python 3.x_Pandas - Fatal编程技术网

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

Python 如何替换数据帧每行上字符串的特定部分?,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。文件名本身只包含我需要的一段信息,即ID

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怎么会呢?这也行。我将使用这个答案,因为它更稳定。这同样有效。我将使用这个答案,因为它更稳定。