У меня есть фрейм данных, содержащий URL-адреса, и я хочу извлечь что-то среднее.
df URL https://storage.com/vision/Glass2020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg https://storage.com/vision/Carpet5020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg https://storage.com/vision/Metal8020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg
желаемый результат будет примерно таким
URL Type https://storage.com/vision/Glass2020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg Glass2020 https://storage.com/vision/Carpet5020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg Carpet5020 https://storage.com/vision/Metal8020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg Metal8020
Я бы использовал df['URL'].str.extract но чтобы понять, как определять до и после разделителя.
df['URL'].str.extract
Попробуйте str.split:
str.split
df['Type'] = df.URL.str.split('/').str[-2]
Одна идея - использовать Series.str.split с выбором второго последнего значения путем индексации:
Series.str.split
df['Type'] = df['URL'].str.split('/').str[-2] print (df) URL Type 0 https://storage.com/vision/Glass2020/2020-02-0... Glass2020 1 https://storage.com/vision/Carpet5020/2020-02-... Carpet5020 2 https://storage.com/vision/Metal8020/2020-02-0... Metal8020
РЕДАКТИРОВАТЬ: для указания других значений за пределами ожидаемого вывода используйте Series.str.extract:
Series.str.extract
df['Type'] = df['URL'].str.extract('vision/(.+)/2020') print (df) URL Type 0 https://storage.com/vision/Glass2020/2020-02-0... Glass2020 1 https://storage.com/vision/Carpet5020/2020-02-... Carpet5020 2 https://storage.com/vision/Metal8020/2020-02-0... Metal8020