Ваше текущее регулярное выражение будет просто захватывать цифру, и если вы хотите захватить разделенные запятыми годы, то вам нужно увеличить это регулярное выражение до
[0-9]+(?:\s+,\s+[0-9]+)*
Это регулярное выражение [0-9]+
будет соответствоватьчисла и, кроме того, (?:\s+,\s+[0-9]+)*
регулярное выражение будут соответствовать одному или нескольким пробелам, за которыми следует запятая, затем снова следует один или несколько пробелов, а затем, наконец, число и целое из них ноль или более раз, как это доступно в данных.
Демонстрация
Измените свою строку данных panda на эту,
data3['CopyRight_year'] = data3['CopyRight'].str.extract('([0-9]+(?:\s+,\s+[0-9]+)*)', expand=False).str.replace('\s+','')
Отпечатки,
CopyRight CopyRight_year
0 2015 Sony Music Entertainment 2015
1 2015 Ultra Records , LLC under exclusive license 2015
2 2014 , 2015 Epic Records , a 1999 division of ... 2014,2015
3 Compilation ( P ) 2014 Epic Records , a divisi... 2014
4 2014 , 2015 Epic Records , a division of Sony ... 2014,2015
5 2014 , 2015 Epic Records , a division of Sony ... 2014,2015
Хотя японравился jezrael
ответ, который использует findall
и join
, что дает вам больше гибкости и более чистый подход.