当前位置: 首页 > 知识库问答 >
问题:

如何从路径字符串的数据帧列中提取基本路径

勾炜
2023-03-14

有几个关于字符串操作的问题,但我找不到一个可以让我做以下事情的答案-我认为应该很简单。。。

我有一个DataFrame,其中包括一个包含文件名和路径的列

下面生成一个代表性的示例数据帧:

df = pd.DataFrame({
    'root': {'1': 'C:\\folder1\\folder2\\folder3\\folder4\\filename.csv'}
})
                                              root
1  C:\folder1\folder2\folder3\folder4\filename.csv

我想以字符串的“文件名”部分结束。有大量的行,并且路径不是常量,因此我不能使用<code>str.replace

我可以像这样去掉最右边的. csv部分:

df['root'] = df['root'].str.rstrip('.csv') 
                                          root
1  C:\folder1\folder2\folder3\folder4\filename

但是我无法使我读过的任何方法都能够删除字符串左侧的路径部分。

假设路径的前面元素可以从一个记录到另一个记录发生变化,我怎样才能只返回这个路径(字符串)的“文件名”部分呢?

共有3个答案

裴昕
2023-03-14

假设路径中总是至少有一个深度,我们可以在斜杠上拆分,获取最后一个元素,然后在上面调用rstri:

In [9]:

df.root.str.split('\\').str[-1].str.rstrip('.csv')
Out[9]:
1    filename
Name: root, dtype: object

根据DSM指出的rstrip,您可以调用split两次:

In [11]:

df.root.str.split('\\').str[-1].str.split('.').str[0]
Out[11]:
1    filename
Name: root, dtype: object
锺离飞尘
2023-03-14

对于最近的Python,建议使用path lib。basename可以通过应用. st获得,如下所示。一般情况下,DataFrames通常有多行,因此下面的示例也使用了熊猫. Application

from pathlib import Path 

df['root'].apply(lambda x: Path(x).stem)
# Out[1]:
# 1    filename
# Name: root, dtype: object

如果要包含扩展名,可以通过应用.name获得它。

df['root'].apply(lambda x: Path(x).name)
# Out[2]:
# 1    filename.csv
# Name: root, dtype: object
桂宏旷
2023-03-14

您可以使用< code>os.path中的实用程序来简化这一过程,即< code>splitext和< code>basename:

>>> import os
>>> df["root"].apply(lambda x: os.path.splitext(os.path.basename(x))[0])
0    filename
Name: root, dtype: object

PS: rstrip并不像您想象的那样工作——它删除的是那些字符,而不是那个子串。例如:

>>> "a11_vsc.csv".rstrip(".csv")
'a11_'
 类似资料:
  • 问题内容: 我将Javsacript文件添加到脚本路径中具有不同查询字符串的页面中,如下所示: 第1页: 第2页: Page3: 在我的Javascript文件中,如何获取“ abc”参数的值?我尝试为此使用window.location,但这不起作用。 如果有帮助,下面是我用来查找查询字符串参数值的函数: 问题答案: 这个有可能。请参见通过src属性传递JavaScript参数。最重要的一点是,

  • 我在spark dataframe中有一个包含文本的列。 我想提取所有以特殊字符开头的单词,我正在使用从该文本列的每一行中提取。如果文本包含以开头的多个单词,则只返回第一个单词。 我正在寻找提取多个符合我在火花模式的单词。 样本输入:< code>@always_nidhi @YouTube不,我不明白,但我喜欢他们的音乐和舞蹈真棒这首mve的所有歌曲都很摇滚 示例输出:

  • 问题内容: 我只想从完整路径到文件获取文件夹路径。 例如,我想要得到(不包括)。 我已经尝试过这样的事情: 但是它给了我这样的结果: 这不是我需要的结果(为)。 关于如何获取文件路径的任何想法? 问题答案: 您几乎可以使用该功能了。您只需要加入字符串,如下所示。 虽然,我建议使用该函数来执行此操作,但是您只需要传递字符串即可,它将为您完成工作。由于您似乎在Windows上,因此也考虑使用该功能。一

  • Java MySQL数据库我正在做一个项目,将一个路径名为“C:\Desktop\”的字符串保存到数据库中。我已经创建了一个实体类来将此路径名更新到数据库中,在javaeclipse中,当我运行程序时,它会显示路径以这种格式存储在数据库中,即“C:\Desktop\”,但在该路径的数据库列中,它只存储“C:Desktop”,没有“\”

  • 问题内容: 我有一个名称为package的字符串(例如“ my / package / test”),我想导入该字符串并从package调用一些函数。 像这样: PS。感谢帮助 问题答案: Go语言不允许您在示例中提到的内容。这是一个有意识的选择。我认为,这种选择的原因与编译器的性能以及机器对代码的理解容易程度有关。例如,这可以启用诸如gofix之类的工具,这些工具可以部分修复Go代码,而无需用户

  • 我只想从文件的完整路径中获取文件夹路径。 例如,我希望只得到(不包括)。 我曾经尝试过这样的事情: 但它给了我这样一个结果: 这不是我需要的结果(是)。 关于如何获取文件路径有什么想法吗?