如何从路径字符串中获取文件夹名称并将其添加到dataframe中的新列中?

2024-04-20 15:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从tar.gz文件中读取文件夹的名称,并创建包含这些名称的列

我正在使用以下代码:

file_path = r"C:\Users\filename.tar.gz"
start_with = './mainfolder/'

import tarfile
import re
with tarfile.open(file_path, "r:*") as tar:
    csv_path = tar.getnames()
    csv_path = list(n for n in tar.getnames() if (n.endswith('.csv')) & (n.startswith(start_with)))
    df = pd.DataFrame()

    csv_list = []

    for file in csv_path:
        df_temp = pd.read_csv(tar.extractfile(file))
        csv_list.append(df_temp)

    df = pd.concat(csv_list)

在主文件夹中,只有少数几个文件夹具有名称。 从文件夹“X”(例如)读取csv文件后,应在此csv文件中创建“FolderName”列,并且必须包含所有行的文件夹名称(“X”)。 对于每个csv文件也是如此

路径字符串的exmaple:./mainfolder/1001_name./mainfolder/1002_some_name


Tags: 文件csvpathimport文件夹名称dfwith
1条回答
网友
1楼 · 发布于 2024-04-20 15:33:42

在以下行之后:

df_temp = pd.read_csv(tar.extractfile(file))

您可以使用os.path.dirname()方法从file路径字符串获取文件夹名称。更多信息here

您将需要import os模块

例如:

#returns ./mainfolder/1001_name
full_folder_path = os.path.dirname(file)

#returns 1001_name
folder = os.path.basename(full_folder_path)

#returns name bit
result = folder[folder.index('_')+1:]

df_temp['FolderName'] = result

这将创建一个名为FolderName的新列,并为所有行设置值。更多信息here

相关问题 更多 >