Как получить имя папки из строки пути и добавить его в новый столбец в pandas dataframe? - PullRequest
1 голос
/ 03 ноября 2019

Я хочу прочитать имена папок из файла 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)

В главной папкеЕсть несколько папок с именами. После чтения CSV-файла из папки «X» (например) в этом CSV-файле должен быть создан столбец «FolderName», который должен содержать имя папки («X») для всех строк. И так для каждого файла CSV.

Пример для строки пути: ./mainfolder/1001_name или ./mainfolder/1002_some_name

1 Ответ

1 голос
/ 03 ноября 2019

После следующей строки:

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

Имя папки можно получить из file строки пути, используя метод os.path.dirname(). Подробнее здесь .

Вам потребуется 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 и установите значение для всех строк. Подробнее здесь .

...