У меня есть df с столбцом имени файла. Само имя файла содержит только часть информации, которая мне нужна, а именно идентификатор.
df:
filename
/path/to/file/in/folder 76317 1a2334bc-5d6e-7f89-123e-0f12fgf123.txt
Мне нужна только часть после папки и до хеша. Итак, в данном случае 76317. Все файлы в папке имеют путь к папке с файлами, пространство, идентификатор, который мне нужен, и пространство с остальной частью имени файла.
Как мне удалить все из столбца имени файла, кроме идентификаторов, которые мне нужны, во всех строках для этого конкретного столбца?






Я не уверен насчет вашей точной реализации, но пробовали ли вы использовать str.split()?
id = filename.split()[1]
Разделите каждую часть имени файла пробелом, который, как вы сказали, встречается в каждом файле, и получите средний элемент, который является индексом 1 в списке разделов, возвращаемых split().
удивительно, это действительно хорошо работает. @RushabhMehta интервал точно такой же. Спасибо большое
@RustyShackleford Все, что я говорю, это то, что ответ sacul более стабильный
@RushabhMehta Как так?
используйте 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
это тоже работает. Я воспользуюсь этим ответом, так как он более стабильный.
попробуй это:
for fileName in column:
ID = fileName.split(' ')[1]
Вы должны попробовать этот подход перед, однако строки помещаются в фрейм данных, поэтому вы не повторяете их дважды.
Поскольку вы знаете точный формат, вы можете использовать split с panda применять:
df['filename'] = df['filename'].apply(lambda x: x.split(' ')[1])
При условии, что интервал такой, как он предложил