Получить путь к папке из файла с сериями панд - PullRequest
0 голосов
/ 09 ноября 2018

Я использую pandas для работы со списком путей к файлам, и мне нужно извлечь путь к папке.

Так от:

/volume1/SYN/FOLDER1/FILE.TXT
/volume1/SYN/FOLDER2/SUBFOLDER/FILE.PDF

Мне нужно получить путь к папке:

/volume1/SYN/FOLDER1/
/volume1/SYN/FOLDER2/SUBFOLDER/

Я нашел способ получить имя файла, но не путь к папке

data['index'] = data['File'].str.split('/').str[-1]

есть идеи?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Вы можете использовать os.path.splitext и извлекать первое разделение, используя понимание списка или apply с пользовательской функцией.

from os.path import splitext

df = pd.DataFrame({'filepaths': [r'/volume1/SYN/FOLDER1/FILE.TXT',
                                 r'/volume1/SYN/FOLDER2/SUBFOLDER/FILE.PDF']})

# list comprehension, more efficient
df['folder'] = [splitext(x)[0] for x in df['filepaths']]

# apply + lambda implicit loop
df['folder'] = df['filepaths'].apply(lambda x: splitext(x)[0])

print(df)

                                 filepaths  \
0            /volume1/SYN/FOLDER1/FILE.TXT   
1  /volume1/SYN/FOLDER2/SUBFOLDER/FILE.PDF   

                                folder  
0            /volume1/SYN/FOLDER1/FILE  
1  /volume1/SYN/FOLDER2/SUBFOLDER/FILE  
0 голосов
/ 09 ноября 2018

Использование rsplit:

data['index'] = data['File'].str.rsplit('/', n=1).str[0] + '/'

Если нет пропущенных значений и важна производительность:

data['index'] = [x.rsplit('/', 1)[0] + '/' for x in data['File']]


print (data)
                                      File                            index
0            /volume1/SYN/FOLDER1/FILE.TXT            /volume1/SYN/FOLDER1/
1  /volume1/SYN/FOLDER2/SUBFOLDER/FILE.PDF  /volume1/SYN/FOLDER2/SUBFOLDER/
...